前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >今天要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~

今天要去看电影《八佰》了,我用Python爬了14.4万条评论看看大家都在聊啥~

作者头像
可以叫我才哥
发布2021-08-05 11:34:20
4240
发布2021-08-05 11:34:20
举报
文章被收录于专栏:可以叫我才哥
1937年淞沪会战的最后一役,“八百壮士”奉命坚守上海四行仓库,以少敌多顽强抵抗四天四夜。

29

  • 0.前言
  • 1.三类(好评、中评和差评)评价用户数据统分
    • 1.1.总体评价词云
    • 1.2.三类用户数据
    • 1.3.三类用户的观后感差异
  • 2.评价数据分布详情
    • 2.1.评分分布
    • 2.2.上映首周每日评价数分布
    • 2.3.每日分时评价数分布
    • 2.4.评价用户城市分布
  • 3.评论数据爬虫过程

八佰

“《八佰》是由华谊兄弟电影有限公司和北京七印象文化传媒有限公司出品,腾讯影业文化传播有限公司、北京光线影业有限公司和阿里巴巴影业(北京)有限公司联合出品,导演管虎执导,黄志忠、欧豪、王千源、姜武、张译、杜淳、魏晨、李晨、俞灏明等主演的战争题材影片。该片取材1937年淞沪会战期间,讲述了史称“八百壮士”的中国国民革命军第三战区88师524团的一个加强营,固守苏州河畔的四行仓库、阻击日军的故事。该片于2020年8月21日上午9点在中国大陆正式上映~ ”

由于今年新冠疫情,电影院也是在最近一段时间才“解封”,《八佰》算是“开年”截止目前热度最高的电影了。朋友圈很多人看完容易沉浸在其气氛中、激发心中的民族感,当然也有一些网友持负面看法。那究竟大家都在有着什么样的观后感呢,我们来通过评论数据看看给予不同评分的观众都怎么说吧。

0.前言

这里我们主要是通过python进行猫眼电影评论内容获取,然后再导入数据库使用superset进行基础数据统分及看板生成,最后用jiebawordcloud做词云分析。

本次数据统计周期为:2020年8月21日9点——8月27日24点 共采集到评论数据量:144,098条

本文主要分为三部分:

  1. 三类(好评、中评和差评)评价用户数据统分 本部分主要根据评分对用户进行分组,然后统计不同分组下用户数及这些用户评价内容的词云分析
  2. 评价数据分布详情 本部分主要是对爬取的全部数据按照日期、评分及用户地区进行基础的数据统计处理,并用supset进行可视化展示
  3. 评论数据爬虫过程 本部分详细介绍猫眼电影评论内容爬取的过程,大家可以参考代码对自己喜欢的电影做类似处理

1.三类(好评、中评和差评)评价用户数据统分

1.1.总体评价词云

在评论中,高频词汇是“勿忘国耻”、“震撼”、“铭记历史”、“国人如此”和“感动”等等,都是比较贴近该部剧作主题和正向的褒义词。

1.2.三类用户数据

评价分数区间为0-5分,按照3分以内为差评,3分为中评,4分以上为好评的分类标准,我们统计结果如下:

代码语言:javascript
复制
# 分箱
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条差评看看:

代码语言:javascript
复制
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格式,整个爬虫过程比较简单,我们不做详细讲解。

评论数据接口地址

“http://m.maoyan.com/mmdb/comments/movie/346210.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":"https://img.meituan.net/maoyanuser/e4308d29872520d06a8d65b01f55dc206358.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},...} ”

爬虫代码:(大家可自行优化)

代码语言:javascript
复制
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 = 'http://m.maoyan.com/mmdb/comments/movie/346210.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)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 可以叫我才哥 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 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.评论数据爬虫过程
              相关产品与服务
              腾讯云 BI
              腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档