豆瓣电影TOP250分析
引入相应的库
import re
import requests
from bs4 import BeautifulSoup
import pandas as pd
爬取豆瓣电影TOP250网页
url =
page = requests.get(url)
page.raise_for_status()
page.encoding = page.apparent_encoding
contents = page.text
for i in range(1,10):
url = + str(i*25) + '&filter='
page = requests.get(url)
page.raise_for_status()
page.encoding = page.apparent_encoding
contents += page.text
soup = BeautifulSoup(contents, "html.parser")
分析网页源码取得电影名称、评分和评价数
#电影中文名
names = []
for tag in soup.find_all(attrs={'class':'title'}):
if not tag.get_text().startswith(u'\xa0/\xa0'):
names.append(tag.get_text())
#电影评分
scores = []
for tag in soup.find_all(attrs={'class':'rating_num'}):
scores.append(float(tag.get_text()))
#评价人数
rates = []
for tag in soup.find_all(attrs={'class':'star'}):
rtag = tag.find_all('span')[-1]
rates.append(int(rtag.string[:-3]))
print len(rates)
250
将名称、评分和评价人数导入pandas的数据框
df = pd.DataFrame({'电影名称':names,'评分':scores,'评价人数':rates})
print df[200:250]
电影名称 评价人数 评分
200 E.T. 外星人 138185 8.5
201 末路狂花 92308 8.7
202 忠犬八公物语 48135 9.0
203 哪吒闹海 70483 8.8
204 发条橙 169634 8.4
205 穆赫兰道 210412 8.3
206 源代码 373998 8.3
207 黑客帝国3:矩阵革命 138507 8.5
208 青蛇 195070 8.4
209 非常嫌疑犯 104068 8.6
210 美国丽人 167621 8.4
211 新龙门客栈 164140 8.4
212 黄金三镖客 45060 9.1
213 上帝也疯狂 87443 8.6
214 无耻混蛋 202801 8.4
215 城市之光 37176 9.2
216 爱·回家 42877 9.0
217 勇士 79406 8.9
218 初恋这件小事 415451 8.2
219 曾经 188482 8.3
220 蓝色大门 252917 8.2
221 麦兜故事 117012 8.5
222 暖暖内含光 131747 8.4
223 无敌破坏王 169107 8.6
224 蝴蝶 89103 8.6
225 与狼共舞 51933 8.9
226 大卫·戈尔的一生 76123 8.7
227 巴黎淘气帮 97753 8.6
228 遗愿清单 111907 8.5
229 国王的演讲 307905 8.3
230 血钻 115210 8.5
231 夜访吸血鬼 181608 8.3
232 模仿游戏 224186 8.5
233 偷拐抢骗 105440 8.5
234 荒岛余生 118664 8.4
235 爱在暹罗 206134 8.3
236 中央车站 70791 8.7
237 两小无猜 296971 8.1
238 千钧一发 72714 8.7
239 月球 128270 8.5
240 疯狂的石头 275919 8.2
241 枪火 86582 8.6
242 罪恶之城 130221 8.4
243 寿司之神 72490 8.8
244 爱在午夜降临前 100100 8.7
245 我爱你 48561 9.0
246 廊桥遗梦 87429 8.5
247 角斗士 118428 8.4
248 假如爱有天意 209976 8.2
249 黑鹰坠落 97560 8.5
将结果保存至文件
df.to_csv('movie.csv',encoding='gbk')