要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~"/>
今天要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~
目录
- 0.前言
- 1.三类(好评、中评和差评)评价用户数据统分
- 1.1.总体评价词云
- 1.2.三类用户数据
- 1.3.三类用户的观后感差异
- 1.3.1好评用户给予的评论内容词云
- 1.3.2中评用户给予的评论内容词云
- 1.3.3差评用户给予的评论内容词云
- 2.评价数据分布详情
- 2.1.评分分布
- 2.2.上映首周每日评价数分布
- 2.3.每日分时评价数分布
- 2.4.评价用户城市分布
- 3.评论数据爬虫过程
《八佰》是由华谊兄弟电影有限公司和北京七印象文化传媒有限公司出品,腾讯影业文化传播有限公司、北京光线影业有限公司和阿里巴巴影业(北京)有限公司联合出品,导演管虎执导,黄志忠、欧豪、王千源、姜武、张译、杜淳、魏晨、李晨、俞灏明等主演的战争题材影片。该片取材1937年淞沪会战期间,讲述了史称“八百壮士”的中国国民革命军第三战区88师524团的一个加强营,固守苏州河畔的四行仓库、阻击日军的故事。该片于2020年8月21日上午9点在中国大陆正式上映~
由于今年新冠疫情,电影院也是在最近一段时间才“解封”,《八佰》算是“开年”截止目前热度最高的电影了。朋友圈很多人看完容易沉浸在其气氛中、激发心中的民族感,当然也有一些网友持负面看法。那究竟大家都在有着什么样的观后感呢,我们来通过评论数据看看给予不同评分的观众都怎么说吧。
0.前言
这里我们主要是通过python进行猫眼电影评论内容获取,然后再导入数据库使用superset进行基础数据统分及看板生成,最后用jieba和wordcloud做词云分析。
本次数据统计周期为:2020年8月21日9点——8月27日24点
共采集到评论数据量:144,098条
本文主要分为三部分:
- 三类(好评、中评和差评)评价用户数据统分
本部分主要根据评分对用户进行分组,然后统计不同分组下用户数及这些用户评价内容的词云分析 - 评价数据分布详情
本部分主要是对爬取的全部数据按照日期、评分及用户地区进行基础的数据统计处理,并用supset进行可视化展示 - 评论数据爬虫过程
本部分详细介绍猫眼电影评论内容爬取的过程,大家可以参考代码对自己喜欢的电影做类似处理
1.三类(好评、中评和差评)评价用户数据统分
1.1.总体评价词云
在评论中,高频词汇是“勿忘国耻”、“震撼”、“铭记历史”、“国人如此”和“感动”等等,都是比较贴近该部剧作主题和正向的褒义词。
1.2.三类用户数据
评价分数区间为0-5分,按照3分以内为差评,3分为中评,4分以上为好评的分类标准,我们统计结果如下:
# 分箱
data['评价类型'] = pd.cut(data['评分'], [0,3,4,6], labels=["差评", "中评", "好评"],right=False)
# 分组计算各评价类型 评价数量
data_star = data.groupby('评价类型')['评分'].count().to_frame('数量').reset_index()
# 计算占比
data_star['占比'] = data_star['数量']/data_star['数量'].sum()
data_star
评价类型 | 数量 | 占比 | |
---|---|---|---|
0 | 差评 | 7830 | 0.054338 |
1 | 中评 | 5435 | 0.0377174 |
2 | 好评 | 130833 | 0.907945 |
可以看到,超过90%的用户给予了4星以上好评,低于3星的差评仅占5.4%,绝大部分人还是给予了很高的评价。
1.3.三类用户的观后感差异
通过对不同评价类型用户的评论关键词分析,我们可以发现好评用户主要表达的是观影后的电影带来的情感共鸣,中评用户则对影片的评价关键点比较分散,差评用户似乎更多关注在导演、剧情和电影院上面。
1.3.1好评用户给予的评论内容词云
一共13万条好评评论,“勿忘国耻”、“感动”、“不错”、“中国”、“震撼”和“可以”等传递的情感非常鲜明。
1.3.2中评用户给予的评论内容词云
在一共5千余条中评评论中,我们看到这部分评论的内容维度参差不齐,有不少认为一般般的,但也有不少觉得可以、好看。
1.3.3差评用户给予的评论内容词云
在7千多条差评中,我们发现还是有不少认为好看、可以的,除此之外评价“垃圾”的用户占比较高,评价关键词也更多的转向了“导演”、“剧情”和“电影院”等。
我们抽样10条差评看看:
print(data[data['评价类型']=='差评'].sample(10)[['评价类型','点评内容']].to_markdown())
评价类型 | 点评内容 | |
---|---|---|
47405 | 差评 | 宣传太夸大了,真心感觉很一般 |
63554 | 差评 | 歪曲历史,不值得看 |
100325 | 差评 | 稀乱影院,第一次带一米二以下小孩子要补票的,订票时什么提示也没有,进场时搞句小孩子要补票(全票) |
106843 | 差评 | 有事没看成,还退不了钱 |
37476 | 差评 | 好好的历史事件,拍成这种德行,期望越高失望越大!拍此片的价值观就有问题。 |
143066 | 差评 | 不如集结号! |
130137 | 差评 | 剧情衔接不好 煽情的部分就是差一点意思 |
71936 | 差评 | 垃圾 不推荐看 |
95015 | 差评 | 拍的什么玩意啊!煽情的戏太多了! |
20194 | 差评 | 情绪渲染镜头过多。剧情不紧凑,人物塑造不鲜明。枪战场面混沌。结局与真实历史不符合。管虎的风格不适合这样战斗风格啊 |
2.评价数据分布详情
从正式上映到8月27日24点,猫眼累计有评论内容评价14.4万,评分高达9.24分,我们通过supset制作看板如下:
2.1.评分分布
在14.4万条评论中,有超过75%的用户给予了5星满分的评价,而超过4星的评价占比也高达90%+。
2.2.上映首周每日评价数分布
上映当天是周五早上9点,我有个同事以为是0点场,然后发现是早上9点便没考虑去追首场。我们可以看到,评价数走势其实比较平稳,除了首周周日那天有明显提升之外,工作日也很平稳(8月27日周四除外)。不过,一般次周周末会又有一个高峰,比如我和小伙伴就决定今天去看来着~
2.3.每日分时评价数分布
从评价数分时分布的走势来看,周末和工作日其实没有啥太大差异,都集中在凌晨2点前(夜猫子居多),下午4-6点,晚上9-12点。这也比较符合正常情况,毕竟吃饭时间不能占用,一般排片上也吃饭前1-2小时和吃饭时间后的排片较多。
2.4.评价用户城市分布
我记得之前应该是北上广深评价用户分布占前四,这次疫情原因,各地电影院“解封”条件不一样吧。从《八佰》首周的用户评价地区分布来看,成都高居第一位!!不得不说,咱们湖北武汉也进了前10 ,感动~
3.评论数据爬虫过程
评论数据爬虫过程主要分为 接口数据请求、数据处理和数据存储三部分,其中数据格式是简单的json格式,整个爬虫过程比较简单,我们不做详细讲解。
评论数据接口地址:
.json?v=yes&offset=0&startTime=2020-08-25%2011:48:06
数据请求结果(截取部分):
{“cmts”:[{“approve”:1,“approved”:false,“assistAwardInfo”:{“avatar”:"",“celebrityId”:0,“celebrityName”:"",“rank”:0,“title”:""},“avatarurl”:“.jpg”,“cityName”:“西安”,“content”:“让人哭的不是悲情,就好像上学的时候我自己做错了事情,结果老师罚了全班人这种感觉。家国大义凛然正气。”,“filmView”:false,“id”:1103548562,“isMajor”:false,“juryLevel”:0,“majorType”:0,“movieId”:346210,“nick”:“🐋”,“nickName”:“🐋”,“oppose”:0,“pro”:false,“reply”:0,“score”:5.0,“spoiler”:0,“startTime”:“2020-08-26 10:51:11”,“supportComment”:true,“supportLike”:true,“sureViewed”:1,“tagList”:{“fixed”:[{“id”:1,“name”:“好评”},{“id”:4,“name”:“购票”}]},“time”:“2020-08-26 10:51”,“userId”:1029449566,“userLevel”:3,“videoDuration”:0,“vipType”:0},…}
爬虫代码:(大家可自行优化)
import requests
import json
import datetime
import pandas as pd
from fake_useragent import UserAgent start_time = '2020-08-27 23:59:59'
end_time = '2020-08-21 09:00:00' # 电影上映时间lis = []
while start_time > end_time:url = '.json?_v_=yes&offset=0&startTime=' + start_time.replace(' ', '%20')headers = {"User-Agent": UserAgent(verify_ssl=False).random}r = requests.get(url, headers=headers)data = r.text# 转为为字典data = json.loads(data)data = data['cmts']for li in data:dic = {}dic['昵称'] = li['nickName']dic['城市'] = li['cityName']dic['评价内容'] = li['content']dic['评分'] = li['score']dic['评价时间'] = li['startTime']lis.append(dic)start_time = dic['评价时间']start_time = datetime.datetime.strptime(start_time, '%Y-%m-%d %H:%M:%S') + datetime.timedelta(seconds=-1)start_time = datetime.datetime.strftime(start_time, '%Y-%m-%d %H:%M:%S')df = pd.DataFrame(lis)
更多推荐
今天要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~
发布评论