Python能否爬取猫眼电影里柯南剧场版的6000条评论?猫眼电影《飞驰人生》有4万多条评论可否用Python进行数据分析?

用Python爬取猫眼电影里柯南剧场版的6000条评论 Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析

本文目录:

一、工具及环境准备

  1. Pycharm
  2. Python3.7.3

二、网页分析

打开猫眼电影官网,发现猫眼电影在电脑网页上看不了很多的评论,于是小编打开开发者模式(按F12),并将其切换到手机端模拟状态。就是下面这个样子:

然后,点击柯南的那一栏直到出现评论:

之后小编就在想,前后端数据的传输肯定是以json格式传输,于是小编就在过滤器那里输入json过滤出json数据,额,,,发现什么都没有,有点尴尬:

不过别急,等我往下滑就出来了:

这样,相关的json数据就出来了,然后我们双击看一下是不是我们想要的评论:(密集恐惧者慎入)

接下来我们继续分析json数据接口url的特点和json格式数据中评论所在的地方,分析发现url的前面都是这样:

而变化的是后面的offset和ts,而且offset是从0开始之后每个增加15来开始增加的,而后面的ts则是一个长达13位的数据,不过如果对数字十分敏感的同学来说,1568854570326则是当前时间的毫秒级显示:

三、代码编写

import requestsimport timeimport jsonimport randomimport codecs# 伪装成浏览器my_headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0;Win64; x64) ' 'AppleWebKit/537.6 (KHTML),like Gecko Chrome/61.0.3613.00 ' 'Safari/537.36', 'Referer':'http://m.maoyan.com/movie/1258394/comments?_v_=yes'}def requestURL(): baseUrl = 'http://m.maoyan.com/review/v2/comments.json' off = 0 time_now = (int)(round(time.time()*1000)) for i in range(400): parame = { 'movieId':'1258394', 'userId':'-1', 'offset':off, 'limit':'15', 'ts':time_now, 'type':'3' } off =15 r = requests.get(baseUrl,params=parame,headers=my_headers,timeout=5) if r.status_code==200: data = json.loads(r.text) commentList = data['data']['comments'] time_now = (int)(round(time.time()*1000)) writeToFile(commentList,off) time.sleep(random.random()) else: print(r.status_code)def writeToFile(comments,off): fileName = '电影评论.txt' with codecs.open(fileName,'a ',encoding='utf-8') as f: for contain in comments: f.write(str(contain['content']) '\n') f.close() print("已经爬取",off,"条数据")if __name__=='__main__': requestURL()

爬取过程:

爬取结果:

四、对评论进行数据分析

代码如下:

import numpy as npfrom wordcloud import WordCloudimport PIL.Image as imageimport codecsif __name__=='__main__': with codecs.open("电影评论.txt",encoding='utf-8') as fp: text = fp.read() mask = np.array(image.open("柯南.jpg")) wordcloud = WordCloud(mask=mask,background_color='white').generate(text) wordcloud.to_file('词云柯南.jpg')

生成的词云图如下:

(柯哀党勿喷)

..

Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析

前言

文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

作者: Yura不说数据说 ,PYuraL

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef

数据爬取

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

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

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

关键是找到不同网页之间的变化规律

有些网址,表面看上去,区别就是在于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,与电影无关,暂时跳过……其他几条都是赞美韩寒、沈腾和黄景瑜的。

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

不成熟的代码

from bs4 import BeautifulSoupimport requestsimport warningsimport refrom datetime import datetimeimport jsoheaders = { &39;: &39;, &39;:&39;}cookies={&39;:&39;}39;http://m.maoyan.com/review/v2/comments.json?movieId=1218091&userId=-1&offset=0&limit=15&ts={}&type=3&获取当前时间(单位是毫秒,所以要✖️1000)for i in range(2000): value=15*i url_range=url.format(url_time) res=requests.get(url_range,headers=headers,cookies=cookies,timeout=10) res.encoding=&39; print(&39; str(ji) &39;) content=json.loads(res.text,encoding=&39;) list_=content[&39;][&39;] count=0 for item in list_: comment.append(item[&39;]) nick.append(item[&39;]) score.append(item[&39;]) comment_time.append(datetime.datetime.fromtimestamp(int(item[&39;]/1000))) gender.append(item[&39;]) userlevel.append(item[&39;]) userid.append(item[&39;]) upcount.append(item[&39;]) replycount.append(item[&39;]) count=count 1 if count==15: url_time=item[&39;] ji =1 time.sleep(random.random())print(&39;)print(url_time)result={&39;:userid,&39;:nick,&39;:userlevel,&39;:gender,&39;:comment_time,&39;:score,&39;:comment,&39;:upcount,&39;:replycount}results=pd.DataFrame(result)results.info()results.to_excel(&39;)

Python爬取《哪吒》5000 条评论,告诉你为什么能10 亿

『运筹OR帷幄』转载

作者:菜鸟学Python

编者按:

7月26日,《哪吒之魔童降世》上映,影片不仅创造了单日票房3亿的成绩,刷新动画电影单日票房的纪录,还成为首部进入内地票房榜前十的动画电影。本文用Python爬虫获取猫眼网的影评数据。通过对获得数据的统计和分析,得到了评论者的性别、等级、所在城市、评分以及评语等综合信息。那么接下来让我们一起来看一下近5000条影评的数据可视化结果吧~

不知道大家最近有没有去看电影,最近身边的朋友都在向我安利一部叫做《哪吒之魔童降世》的动漫电影。大家无一例外,都说非常的好看。

看一下最近的微信搜索指数,比火热的电视剧“亲爱的热爱的”搜索指数要高出近6倍,比迪斯尼的“狮子王”要高出22倍,确实非常火。

小编抱着好奇的心态,去猫眼上看了一下,结果显示在接近84万人评分的情况下,评分竟然高达9.7分。看了这确实是一部好剧,也值得我去爬取一下大家的评论,并进行一波分析,从中发现一些值得关注的东西。

1数据的获取

首先是关于数据的爬取,数据的爬取相对简单,大家只需要打开猫眼网里面这部片子的网址,便可以看到下面的影评。在开发者模式中,切换到移动端,便可以看到影评,如果大家仔细观察,可以发现,影评是动态加载的,如下图所示:

动态加载的话,大家只需要在network下的XHR内,仔细观察,便可以发现网页动态加载的json数据,也就是我们要爬取的数据。如下图所示。

(动态图)

接下来就是利用简单的爬虫进行爬取了,部分代码如下图所示。

爬取的过程其实很简单,通过手机端的链接进去,然后循环爬取,用bs进行解析即可,然后把保存为json文件。

2数据的分析

爬取完数据之后,接下来便是数据的分析,上述的数据中,大概有5000多条。(先爬5000条,高并发几十万条需要用分布式爬虫才可以)

小编爬到了评论者的性别(0为未知,1代表男,2代表女)、等级、所在城市、评分以及评语。

3影评分析

用Python做可视化分析的工具很多,目前比较轻量级好用的库是pyecharts,在公众号里面多次讲解过它的用法,这里就不详细重复了!我们看快速看一下近5000条影评的数据可视化结果:

1)总体评分

《哪吒》在猫眼中的总体评分为9.7分,这个分数无疑是非常高的。超过了国产动画比如“白蛇传”。从评分分布来看,大多数评分都给了满分,占总数的86.5%,其次是4.5分,占总数的7.7%,给到3分及以下的人非常少,还不足总人数的5%,要知道众口难调,这个差评比例在电影中可以算非常低的了。

2)性别差异

通常来说这种国产动画的“大片”比较符合大众口味,从评论者性别分布数据来看,虽然有接近一半的人不愿透露性别,但从已知数据判断,观影男女比例约为1:1多一点,女性观众的比例稍微高一点。

3).城市分布

接下来小编分析了评论者所在的城市分布。首先是直方图的来粗略的展示前十大热门的影迷城市,如下图所示:

直方图的展示不是很直观也不全面,因此,小编采用地图的形式,为大家更加直观的进行展示,由于观影者的城市地理位置可能没有出现在程序的设置中,因此,小编只选取了观影城市最多的前八十个城市作为动态展示,如下图所示:

(动态图)

4).评论内容

首先整合评论内容,然后利用wordcloud库绘制词云图,从词云分析情况来看,满屏的 “好看”,“不错”,“特效”等赞美的词语,与以往的电影不同的是, “剧情”,“故事”等字眼也特别醒目。

其实这部大片,算是国产动画电影里面的大制作,电影制作花了5年的时间,剧本改了60几个版本,制作的团队高达千人。电影里面有1800多个镜头,有1300多个是特效,这样的用心之作难怪上映之后,口碑爆棚啊!

而且导演还有很多致敬 星爷的地方,比如太乙真人那段,很像功夫片段里面的桥段,最搞笑的还有一本 《神仙的自我修养》,好了不剧透了,大家赶紧去电影院看一下吧

大家都在看
本文经用户投稿或网站收集转载,如有侵权请联系本站。