初来乍到,请多多关照!如下代码如有异议请留言指出,感谢阅读!
通过python爬取豆瓣前250条电影信息
以下代码从IT私塾学习并精简
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122import requests # 请求数据 from bs4 import BeautifulSoup # 解析数据 import re # 正则匹配 import sqlite3 # 数据库 def main(): baseurl = "https://movie.douban.com/top250?start=" datalist = getDate(baseurl) saveDate(datalist) findLink = re.compile(r'<a href="(.*?)">') # 影片链接 findImg = re.compile(r'img.*src="(.*?)"') # 图片链接 findName = re.compile(r'<img alt="(.*?)"') # 影片名字 findScore = re.compile(r'<span class="rating_num" property="v:average">(.*)</span>') # 影片评分 findAbstract = re.compile(r'<span class="inq">(.*)</span>') # 影片简介 # 1.爬取数据 def getDate(baseurl): datalist = [] for i in range(0, 10): # 调用获取页面信息的函数,10次 url = baseurl + str(i * 25) html = askURL(url) # 保存获取到的网页源码 # 2.逐一解析数据 soup = BeautifulSoup(html, "html.parser") for item in soup.find_all('div', class_="item"): # 查找符合要求的字符串,形成列表 # print(item) #测试:查看电影item全部信息 data = [] # 保存一部电影的所有信息 item = str(item) name = re.findall(findName, item)[0] # re库用来通过正则表达式查找指定的字符串 data.append(name) score = re.findall(findScore, item)[0] data.append(score) abstract = re.findall(findAbstract, item) if len(abstract) != 0: abstract = abstract[0].replace("。", "") # 去除句号 data.append(abstract) else: data.append(" ") # 留空 img = re.findall(findImg, item)[0] data.append(img) link = re.findall(findLink, item)[0] data.append(link) datalist.append(data) # 注意将数据放入datalist return datalist # 得到指定一个URL的网页内容 def askURL(url): head = { # 模拟浏览器头部信息,向豆瓣服务器发送消息 "User-Agent": "Mozilla / 5.0(Windows NT 10.0; Win64; x64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 80.0.3987.122 Safari / 537.36" } # 用户代理,表示告诉豆瓣服务器,我们是什么类型的机器、浏览器(本质上是告诉浏览器,我们可以接收什么水平的文件内容) html = "" try: html = requests.get(url, headers=head).text except Ellipsis as e: print(e) return html # 创建数据库 def createDB(): sql = ''' create table Top250( id integer primary key autoincrement, name varchar not null, score float, abstract text, img text, link text) ''' conn = sqlite3.connect("doubanDB") # 打开或创建数据库文件 c = conn.cursor() # 获取游标 c.execute(sql) # 执行sql语句 conn.commit() # 提交数据库操作 conn.close() # 关闭数据库连接 print("创建数据库成功") # 3.保存数据 def saveDate(datalist): createDB() # 创建数据库 i = 1 conn = sqlite3.connect("doubanDB") # 打开或创建数据库文件 c = conn.cursor() # 获取游标 for data in datalist: print(f"正在保存第{i}条数据") i += 1 for index in range(len(data)): data[index] = '"' + data[index] + '"' #给添加数据库中的数据加 “ 号 sql = ''' insert into Top250( name,score,abstract,img,link) values(%s)'''%",".join(data) # print(sql) c.execute(sql) conn.commit() conn.close() print("全部数据保存成功!!") if __name__ == '__main__': main()
感谢阅读!
最后
以上就是忧伤铃铛最近收集整理的关于通过python爬取豆瓣前250条电影信息的全部内容,更多相关通过python爬取豆瓣前250条电影信息内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复