数据分析 告诉你《飞驰人生》为什么这么燃?

数据分析《飞驰人生》为什么这么燃?


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()")

		#score里面有一个bug,如果有的人没有评分,但是评论了,那么score解析出来是日期,而日期所在位置spen[3]为空
		fscore = content.xpath("//div[@id='comments']/div/div[2]/h3/span[2]/span[2]/@title")
		# data = content.xpath("//div[@id='comments']/div/div[2]/h3/span[2]/span[3]/@title")
		# 定义一个正则
		s = '\d{4}-\d{2}-\d{2}'
		score =[]
		# 将匹配的fscore转化为分数
		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)
		# 防止ip被封
		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
# 将data_time转为时间序列
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
# 将votes转换为整形
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'
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值