坦白说,看前几部电影的时候,我一直在想“到底放不放阿信的歌啊?什么时候放啊?”,那看《飞驰人生》的时候,直到影片结束片尾曲《一半人生》响起的时候,我才记起来,哦,之前我是为了这首歌才看的这部电影。

截止大年初四晚上24点,猫眼实时数据显示《飞驰人生》综合票房排名第三,票房占比16.1%。但是仅仅依靠数字怎么能直接看出一部电影的优劣呢?不如们来看看观众们的评论,看看从中能得出什么有趣的点。

数据爬取

其实我一开始是想用豆瓣网的评论的,但是我翻了翻吧,发现“最热评论”只能看到500条,“最新评论”只能显示100条,拿600条数据能分析出个啥?

百度了一下,看大家都是用猫眼评论,于是就……爬猫眼!网页版的猫眼只能显示有限的评论,切换到APP版本才能看到所有评论。

找network里面的网页也不难,随便拿一条评论搜索一下就可以找到?

Crtl+F

关键是找到不同网页之间的变化规律(要不是我在这上面栽了跟头,初三就能写完这篇文章了……?)

有些网址,表面看上去,区别就是在于offset(偏移量),但是实际上更改这个数值到1005的时候就爬不到东西了(可能是由于网页内部的设置吧),就是说这么下去我们只能得到1000条评论。

那是哪1000条评论呢?我们看到网址中有个关键词“ts=1549640420581”,其实就是当前时间的意思(时间戳),转化一下就是:

所以1000条就是从这个时间点,往前偏移15条后,最新的1000条评论。

通过百度各位大神的爬虫过程,我发现终极解决方法就是更改ts的值!如果说偏移量15的意思是从这个查询的时间往前偏移15条再取得15条评论数据(limit=15),那么我们每次更改ts值不就可以了。

第一个ts值是程序开始运行的时间,第二个值就从已经获取的评论数据中拿到最早的那个数据,以此不断往前翻滚……

我爬取了2月8日24点之前的所有评论信息,按App显示此时至少有80000+条数据,但是我爬下来总共只有4w+条…数据缺失还是比较严重的。

数据格式如下(包括用户id、用户昵称、用户猫眼等级、性别、时间、评分、评论内容、点赞数和评论数):

这些都是在json里面,格式非常清晰明了。

数据清洗

拿到数据除了做词云用了Python(代码在最后),其他的内容Excel分分钟解决,这里尤其感谢发明“数据透视表”的兄弟。


数据分析



1.观众信息


男女比例各占一半,男的对赛车这类刺激性东西感兴趣可以理解,这女观众都是为了啥?为了黄景瑜小哥哥的脸?还是像我一样冲着阿信来的?这里信息太少,我只做少量胡思乱猜。

用户等级又是类似于正态分布的形状,巧的嘞……其中0分和1分的用户(可以认定为新注册用户)仅占9.78%,可以看出评分的人中水军是很少的,基本都是猫眼老用户。

再看看这4天用户评价数量的变化:

基本可得这部电影热度呈现缓慢下降的趋势(但是由于数据的不完整性,不能绝对说明)。

那用户都喜欢在什么时间评论呢?对比看四天的评论hour数据:

如果大家习惯看完电影马上评价的话,那么从评论趋势来看,从中午12点之后评论数逐渐增加,推测是由于早上10点左右那场电影的结束。随后评论数不断增加,在晚饭前的5、6点和睡觉前的23点左右达到小高峰。

嗯,非常符合大家“醒了看电影,看完吃饭,吃了再看,看了再睡‘的“节假日生活作息”。


2.评分情况


按照我爬取的数据我们看到超过一半(52.37%)的观众给这部电影打了满分10分,极少量用户评分在6分以下(仅占7.58%)。根据我爬取的数据,计算所得平均分是8.725,和实时显示的分数8.8相差不大。

除了从宏观角度看评分,我们来瞧瞧评论者性别和评论时间与最终评分有什么不能说的秘密?

性别的不同并没有造成评分很大的区别,男观众和女观众的评分平均分仅仅相差0.35分,“未知性别”人群的评分在两者之间,基本等于男性评分8.53和女性评分8.88的的平均值(8.71)。嗯,我很有理由怀疑“未知人群”中男女比例也各占一半!

从评分时间和评分的关系来看,低分一般出现在0点到7点之间,我猜吧,大概是在这种夜深人静的时候,大家的情绪容易有大起大落,白天看完电影时的兴奋已经退去,留下的只有深深的思考,或许还带点批判性,吧。


3.评论内容


先看看点赞数最高的5条评论。

我们发现前5条评论评分均为10分:其中第一条,emmm,与电影无关,暂时跳过……其他几条都是赞美韩寒、沈腾和黄景瑜的。

那通过词云具体看一下评论内容:

从词云图中可以看出:

出现频率最高的是“好看”“不错”“喜欢”,说明观众对《飞驰人生》的整体评价是很不错的。

“韩寒”“沈腾”或是该片最大赢家,评论中对他们的名字提到多次;“黄景瑜”“尹正”作为相对名气较小的演员,在此片中的表现也不逊其他人:尹正饰演的宇强说得了中二台词、跳得了性感钢管舞,能给张弛带来当头一棒的警醒,也是一直在他身后的精神支柱;黄景瑜饰演的林臻东人设完美,简直是所有女孩的理想型:多金、高颜值、优秀而又谦逊,爱了爱了。

从剧情来看,“励志”“搞笑”“热血”“梦想”这些词语也说明这是一部超燃的电影,里面有一句台词“不是非得赢,我只是不想输”,够中二吧?但也够热血。

词云里面另一个高频词是”结局“(”结尾“),影片的最后张弛因为不能及时刹车冲向了落日,彩蛋里面却出现了他与儿子同学的飞行员爸爸比赛的场景。随着儿子的投币,场景一转,浮现了”Heroes never die“,“英雄不朽”,张弛永远地活在了他儿子的心中。另:巴音布鲁克草原在新疆,哪儿有海?

不成熟的代码



1.爬取评论


1from bs4 import BeautifulSoup
2import requests
3import warnings
4import re
5from datetime import datetime
6import json
7import random
8import time
9import datetime
10
11
12
13headers = {
14    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1',
15    'Connection':'keep-alive'}
16cookies={'cookie':'_lxsdk_cuid=168c325f322c8-0156d0257eb33d-10326653-13c680-168c325f323c8; uuid_n_v=v1; iuuid=30E9F9E02A1911E9947B6716B6E91453A6754AA9248F40F39FBA1FD0A2AD9B42; webp=true; ci=191%2C%E5%8F%B0%E5%B7%9E; _lx_utm=utm_source%3DBaidu%26utm_medium%3Dorganic; __mta=49658649.1549462270794.1549465778684.1549548206227.3; _lxsdk=30E9F9E02A1911E9947B6716B6E91453A6754AA9248F40F39FBA1FD0A2AD9B42; _lxsdk_s=168c898414e-035-f0e-e6%7C%7C463'}
17
18#url设置offset偏移量为0
19url = 'http://m.maoyan.com/review/v2/comments.json?movieId=1218091&userId=-1&offset=0&limit=15&ts={}&type=3'
20
21comment=[]
22nick=[]
23score=[]
24comment_time=[]
25gender=[]
26userlevel=[]
27userid=[]
28upcount=[]
29replycount=[]
30ji=1
31
32
33url_time=url_time=int(time.time())*1000#获取当前时间(单位是毫秒,所以要✖️1000)
34
35for i in range(2000):
36    value=15*i
37    url_range=url.format(url_time)
38    res=requests.get(url_range,headers=headers,cookies=cookies,timeout=10)
39    res.encoding='utf-8'
40    print('正在爬取第'+str(ji)+'页')
41    content=json.loads(res.text,encoding='utf-8')
42    list_=content['data']['comments']
43    count=0
44    for item in list_:
45        comment.append(item['content'])
46        nick.append(item['nick'])
47        score.append(item['score'])    
48        comment_time.append(datetime.datetime.fromtimestamp(int(item['time']/1000)))
49        gender.append(item['gender'])
50        userlevel.append(item['userLevel'])
51        userid.append(item['userId'])
52        upcount.append(item['upCount'])
53        replycount.append(item['replyCount'])
54        count=count+1
55        if count==15:
56            url_time=item['time']
57    ji+=1
58    time.sleep(random.random())
59print('爬取完成')
60print(url_time)
61result={'用户id':userid,'用户昵称':nick,'用户等级':userlevel,'性别':gender,'时间':comment_time,'评分':score,'评论内容':comment,'点赞':upcount,'评论':replycount}
62results=pd.DataFrame(result)
63results.info()
64results.to_excel('猫眼_飞驰人生.xlsx')

2.画词云


1import pandas as pd
2import numpy as np
3import re
4import jieba
5import wordcloud
6import matplotlib.pyplot as plt
7from collections import Counter
8from PIL import Image
9jieba.load_userdict("new.txt") #新定义词典
10df=pd.read_excel('猫眼_飞驰人生.xlsx')
11
12comments=str()
13for comment in df['评论内容']:
14    comments=comments+comment
15
16stopwords = {}.fromkeys([ line.rstrip() for line in open('stopwords.txt') ])
17segs = jieba.cut(comments,cut_all=False)
18
19cloud_text =[]
20for seg in segs:
21    if seg not in stopwords:
22            cloud_text.append(seg)      
23
24fre= Counter(cloud_text)
25
26mask = np.array(Image.open('d.jpeg')) # 定义词频背景
27wc = wordcloud.WordCloud(
28    font_path='Hiragino Sans GB.ttc', # 设置字体格式
29    mask=mask, # 设置背景图
30    max_words=150, # 最多显示词数
31    max_font_size=150 # 字体最大值
32)
33
34wc.generate_from_frequencies(fre) # 从字典生成词云
35image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案
36wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
37plt.imshow(wc) # 显示词云
38plt.axis('off') # 关闭坐标轴
39plt.show() # 显示图像
40wc.to_file('comment_pic.png')

写在最后

现在是大年初留,没看电影的大家抓住假期的尾巴去瞧一瞧,电影很精彩,片尾曲《一半人生》也很好听哦!

下面是我看完电影当晚做的影评手账?

还有还有,祝大家新年快乐,?事情顺利!

作者:Yura,计算机科学与技术专业大四在读,因在澳洲交换学习接触了大数据,甚感兴趣。遂开公众号“Yura不说数据说”督促自己学习数据分析!欢迎大家关注我的个人公众号,一起(监督我)学习。

声明:本文为作者投稿,版权归其个人所有。

 热 文 推 荐 

☞ 极客头条

☞ 程序员们的“钢铁审美”:花花公子封面女郎如何成为互联网第一夫人?

☞ 如果我回腾讯上班

☞ 断舍离:我彻底戒掉苹果、微软、Google、Facebook 和亚马逊之后?

☞ 微信说不!有何不可?

☞ 移动互联网“大开放”之死

☞ @程序员,沟通这项核心技能你掌握了多少?

年薪 10 万的程序员,如何积累人生的第一个 100 万?

print_r('点个好看吧!');
var_dump('点个好看吧!');
NSLog(@"点个好看吧!");
System.out.println("点个好看吧!");
console.log("点个好看吧!");
print("点个好看吧!");
printf("点个好看吧!\n");
cout << "点个好看吧!" << endl;
Console.WriteLine("点个好看吧!");
fmt.Println("点个好看吧!");
Response.Write("点个好看吧!");
alert("点个好看吧!")
echo "点个好看吧!"

喜欢就点击“好看”吧!

Python 爬取了猫眼 47858 万条评论,告诉你《飞驰人生》值不值得看?!相关推荐

  1. Python爬取了猫眼47858万条评论,告诉你《飞驰人生》值不值得看?!

    来源 | Yura不说数据说 坦白说,看前几部电影的时候,我一直在想"到底放不放阿信的歌啊?什么时候放啊?",那看<飞驰人生>的时候,直到影片结束片尾曲<一半人生 ...

  2. 用Python爬取陈奕迅歌曲10万条评论的新发现

    一.抓数据 要想做成词云图表,首先得有数据才行.于是需要一点点的爬虫技巧. 基本思路为:抓包分析.加密信息处理.抓取热门评论信息 1.抓包分析 我们首先用浏览器打开网易云音乐的网页版,进入陈奕迅< ...

  3. python的歌曲评论数据分析_用Python爬取陈奕迅歌曲10万条评论的新发现

    一.抓数据 要想做成词云图表,首先得有数据才行.于是需要一点点的爬虫技巧. 基本思路为:抓包分析.加密信息处理.抓取热门评论信息 1.抓包分析 我们首先用浏览器打开网易云音乐的网页版,进入陈奕迅< ...

  4. Python 爬取了 121.3 万条大众点评,告诉你哪里的小龙虾才是一绝!

    俗语有云,酷暑三伏钓早晚.那么啤酒配上小龙虾,岂不甚妙哉?本文是一篇吃货指南,给广大的小龙虾爱好者扒一扒,哪里的小龙虾才是一绝. 题图来源:金渡广告摄影 获得数据 本次数据我们爬取了大众点评中所有打上 ...

  5. Python爬取北京2.3万条租房信息,发现快租不起房子了!

    1.概述 北上广深作为打工人最多的超一线城市,大部分都是租房生活着.自如作为目前第三方租房平台,应该算是该行业的龙头.但是最近蛋壳的暴雷,我们不得不更加警觉.那么自如都有多少open状态的房源呢,这些 ...

  6. 用python爬取冰冰B站千条评论,我发现了这些...

    Python爬取 冰冰 第一条B站视频的千条评论,绘制词云图,看看大家说了什么吧 B站当日弹幕获取冰冰B站视频弹幕爬取原理解析 数据分析 import pandas as pd data = pd.r ...

  7. 猫眼5万条评论告诉你《飞驰人生》值不值得看?!

    坦白说,看前几部电影的时候,我一直在想"到底放不放阿信的歌啊?什么时候放啊?",那看<飞驰人生>的时候,直到影片结束片尾曲<一半人生>响起的时候,我才记起来 ...

  8. python爬取考研成绩什么时候出来_用Python爬取了考研吧1000条帖子,原来他们都在讨论这些...

    原标题:用Python爬取了考研吧1000条帖子,原来他们都在讨论这些 写在前面 考研在即,想多了解考研er的想法,就是去找学长学姐或者去网上搜索,贴吧就是一个好地方.而借助强大的工具可以快速从网络鱼 ...

  9. 怎么用python爬取老师_小年轻不讲武德,竟用Python爬取B站上1.4w条马保国老师视频数据进行分析...

    看到标题,啪的一下你就进来了吧!如果有经常刷B站的小伙伴,肯定都知道B站鬼畜现在的顶流是谁? 印度:没错正是在下 那必须是当代大师浑元形意太极拳掌门人「马保国」先生啊! 实话讲,马保国走进大家视野还是 ...

最新文章

  1. 炫界 (587) -(牛一邓丽君音)_50音起源 for mac(日语五十音学习软件)
  2. 深入理解AbstractQueuedSynchronizer(AQS)
  3. GIT提交message规范
  4. 可以用在任何人身上:百战百胜人生10大成功秘诀
  5. springboot2.0 配置自定义提示功能依赖
  6. Oracle项目管理系统P6 EPPM企业级规划方案
  7. 两台计算机如何连接一个网络打印机共享,打印机怎么连接2台电脑?两台或多台电脑连接共享打印机操作方法...
  8. 苹果怎么换行打字_微信新功能上线!安卓苹果都有!网友:再也不怕被刷屏了!!...
  9. JAVA中两个char类型相加_5.16--java数据类型转换及杂记
  10. 数学词汇的英译,写文章,读文献必备
  11. c语言 输出定向到文件 命令提示符窗口也能看见,关于cmd:显示Windows命令提示符输出并将其重定向到文件...
  12. Java使用POI导出图片的Excel
  13. 耳机声控,以及耳机拔出或者插入控制播放暂停
  14. MyBatis分组统计查询、多条件查询
  15. 苏黎世联邦理工 T. Roscoe 教授:如何撰写系统会议论文评审
  16. 饥荒联机版Mod开发——配置代码环境(二)
  17. HIVE HWI 搭建过程
  18. 计算机英语情景对话二人组,英语小对话二人组日常情景对话(2)
  19. Python极简讲义——一本书入门数据分析与机器学习(序言)
  20. 办公自动化--python-pptx

热门文章

  1. nao机器人行走速度_数计学院学子在2020世界机器人大赛总决赛中荣获佳绩!
  2. 【论文阅读】Graph Networks for Multiple Object Tracking
  3. 映月城与电子姬服务器维护,映月城与电子姬11月16日更新公告 加强玩家作弊检测增加举报功能...
  4. 获取python脚本的返回值_Python多线程获取返回值代码实例
  5. Zookeeper启动和Leader选举机制
  6. Protobuf的C++使用笔记
  7. C++11的POD类型
  8. 中国农用喷雾机市场趋势报告、技术动态创新及市场预测
  9. 中国内窥镜仪器固定臂市场趋势报告、技术动态创新及市场预测
  10. 浙大计算机学院绩点,浙江大学学分制管理暂行规定-浙江大学本科生院.doc