数据分析《飞驰人生》为什么这么燃?
2019年贺岁电影《飞驰人生》在豆瓣排名和猫眼排名中都排名第二的位置
我们这里爬取了豆瓣500条的评论数据来,分析一下《飞驰人生》为何这么燃
(这里说明一下,之所以获取这么点数据,是豆瓣的 的反爬限制,非登录状态只能爬取200条,登录状态可以爬取500条)
运行环境:python3.6
需要安装的包:
requests
lmxl
pandas
numpy
matplotlib
jieba
wordcloud
2 数据采集
直接上代码
"""
豆瓣爬取 电影 <<飞驰人生>> 影评和评分
上映日期: 2019-02-05(中国大陆)
人名:name
时间:data_time
评分:score
简评:comment_short
评论投票:votes
"""
import requests,time,json,random
from lxml import etree
import re
def fly(headers,url):
flying = []
name_list=[]
score_list=[]
votes_list=[]
comment_short_list=[]
data_time_list=[]
for i in range(0,480,20):
new_url = url.format(i)
requ = requests.get(new_url,headers=headers)
req = requ.text
content = etree.HTML(req)
name = content.xpath("//div[@class='comment-item']//span[@class='comment-info']/a//text()")
data_time = re.findall('<span class="comment-time.*title="(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}).*">',req)
votes = content.xpath("//div[@id='comments']/div/div[2]/h3/span[1]/span[@class]//text()")
comment_short = content.xpath("//div[@id='comments']/div/div[2]/p[@class]/span[@class]//text()")
fscore = content.xpath("//div[@id='comments']/div/div[2]/h3/span[2]/span[2]/@title")
s = '\d{4}-\d{2}-\d{2}'
score =[]
for i in fscore:
mt= re.compile(s).match(i)
if mt is not None:
i = 0
elif i =='很差':
i = 2
elif i == '较差':
i = 4
elif i == '还行':
i = 6
elif i == '推荐':
i = 8
else:
i = 10
score.append(i)
time.sleep(round(random.uniform(7, 14), 2))
name_list.extend(name)
score_list.extend(score)
votes_list.extend(votes)
comment_short_list.extend(comment_short)
data_time_list.extend(data_time)
flying.append({
'name':name_list,
'score':score_list,
'votes':votes_list,
'comment_short':comment_short_list,
'data_time':data_time_list
})
fl = json.dumps(flying,ensure_ascii=False)
print(len(flying))
with open('flying.txt','a+',encoding='utf-8') as f:
f.write(fl)
if __name__ == '__main__':
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Connection': 'keep - alive',
'cookie':'...'
}
url ='https://movie.douban.com/subject/30163509/comments?start={}&limit=20&sort=new_score&status=P'
fly(headers,url)
3 数据处理
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import json
with open('flying.txt','r',encoding='utf-8') as f:
fly = f.read()
flying = json.loads(fly)
flying
f = pd.DataFrame(
flying[0]
)
|
name |
score |
votes |
comment_short |
data_time |
0 |
凝叶苔簌 |
8 |
3349 |
有幸参加了上海的全国看片会。沈腾始终是我的笑点,他就算站着不动我也会哈哈哈的笑起来。这一部不... |
2019-02-05 09:04:30 |
1 |
1.9 |
2 |
7648 |
杂乱无章,不伦不类 |
2019-02-05 09:30:01 |
2 |
凌睿 |
0 |
9360 |
《飞驰人生》讲述昔日西虹市首富王多鱼因非法赛车被捕入狱、倾家荡产的故事,后来他经过不懈努力,... |
2019-02-05 08:17:39 |
3 |
小葱 |
10 |
7086 |
很搞笑,拉力赛超级燃,后面有点感动,居然还看哭了,结局出乎意料,沈腾黄景瑜尹正演的都很好 |
2019-02-05 09:22:44 |
4 |
pirlo021 |
2 |
4132 |
韩寒好好开赛车办杂志不好吗,非得去拍电影,为什么要拍这么尴尬无聊做作苍白生硬的笑话集锦 |
2019-02-05 09:15:58 |
f.tail()
|
name |
score |
votes |
comment_short |
data_time |
475 |
哪 吒 |
6 |
0 |
没什么新花样 |
2019-02-14 03:27:03 |
476 |
冷杉 |
8 |
1 |
赛车片,阿郎的故事冷笑话版。韩寒最喜欢的还是赛车,所以就赛车段落摄影和剪辑好看,纯粹是汽车广... |
2019-02-06 21:05:10 |
477 |
盲忙 |
6 |
2 |
前边一大段看得我十分尴尬,如坐针毡,到底是想搞笑还是想励志?都想要的结果就是不伦不类,导致搞... |
2019-02-08 01:31:48 |
478 |
★ |
8 |
0 |
4 從沒完整看過韓寒的任何一部電影,卻因為沈騰走進電影院。從頭笑到尾,也曉得其中一些韓老師想... |
2019-02-09 02:48:54 |
479 |
爱屯最可爱 |
10 |
0 |
什么时候我能拥有这般纯粹的热爱???有那么一次奋不顾身。尹正真美。2019年春节第二发。 |
2019-02-13 17:29:42 |
f.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 480 entries, 0 to 479
Data columns (total 5 columns):
name 480 non-null object
score 480 non-null int64
votes 480 non-null object
comment_short 480 non-null object
data_time 480 non-null object
dtypes: int64(1), object(4)
memory usage: 18.8+ KB
f['data_time'] = pd.to_datetime(f['data_time'])
f.head()
|
name |
score |
votes |
comment_short |
data_time |
0 |
凝叶苔簌 |
8 |
3349 |
有幸参加了上海的全国看片会。沈腾始终是我的笑点,他就算站着不动我也会哈哈哈的笑起来。这一部不... |
2019-02-05 09:04:30 |
1 |
1.9 |
2 |
7648 |
杂乱无章,不伦不类 |
2019-02-05 09:30:01 |
2 |
凌睿 |
0 |
9360 |
《飞驰人生》讲述昔日西虹市首富王多鱼因非法赛车被捕入狱、倾家荡产的故事,后来他经过不懈努力,... |
2019-02-05 08:17:39 |
3 |
小葱 |
10 |
7086 |
很搞笑,拉力赛超级燃,后面有点感动,居然还看哭了,结局出乎意料,沈腾黄景瑜尹正演的都很好 |
2019-02-05 09:22:44 |
4 |
pirlo021 |
2 |
4132 |
韩寒好好开赛车办杂志不好吗,非得去拍电影,为什么要拍这么尴尬无聊做作苍白生硬的笑话集锦 |
2019-02-05 09:15:58 |
f.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 480 entries, 0 to 479
Data columns (total 5 columns):
name 480 non-null object
score 480 non-null int64
votes 480 non-null object
comment_short 480 non-null object
data_time 480 non-null datetime64[ns]
dtypes: datetime64[ns](1), int64(1), object(3)
memory usage: 18.8+ KB
f.dropna(axis='rows')
f.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 480 entries, 0 to 479
Data columns (total 5 columns):
name 480 non-null object
score 480 non-null int64
votes 480 non-null object
comment_short 480 non-null object
data_time 480 non-null datetime64[ns]
dtypes: datetime64[ns](1), int64(1), object(3)
memory usage: 18.8+ KB
f['votes']=f['votes'].astype(np.int)
f.tail()
|
name |
score |
votes |
comment_short |
data_time |
475 |
哪 吒 |
6 |
0 |
没什么新花样 |
2019-02-14 03:27:03 |
476 |
冷杉 |
8 |
1 |
赛车片,阿郎的故事冷笑话版。韩寒最喜欢的还是赛车,所以就赛车段落摄影和剪辑好看,纯粹是汽车广... |
2019-02-06 21:05:10 |
477 |
盲忙 |
6 |
2 |
前边一大段看得我十分尴尬,如坐针毡,到底是想搞笑还是想励志?都想要的结果就是不伦不类,导致搞... |
2019-02-08 01:31:48 |
478 |
★ |
8 |
0 |
4 從沒完整看過韓寒的任何一部電影,卻因為沈騰走進電影院。從頭笑到尾,也曉得其中一些韓老師想... |
2019-02-09 02:48:54 |
479 |
爱屯最可爱 |
10 |
0 |
什么时候我能拥有这般纯粹的热爱???有那么一次奋不顾身。尹正真美。2019年春节第二发。 |
2019-02-13 17:29:42 |
f.info()
<class 'pandas.core.frame.DataFrame'