哪吒票房逼近40亿,用python爬取哪吒短评分析
目录
- 前言
- 分析
- 具体步骤
- 登录
- 爬取与存储
- 可视化分析
- 结语
前言
- 暑期档电影惨淡,但随着哪吒爆红开拓了新局面。这也是国产动画的首次爆红。在哪吒刚出,笔者
以为最多10亿
就算不错的了。没想过仅过了几天就破了10亿。接着头条又突破20亿--------11天27亿,势头增长依然很猛
!又破了30亿!
那笔者就很好奇人们是怎么看待这一步电影的呢?
- 哪吒?我想哪吒是
陪伴过不少人
成长的一部动画片吧,也是记忆中算得上最好看
的动画片之一
了。里面的哪吒、小猪熊、申公豹、石鸡娘娘令人历历在目。我们或许都被哪吒的敢打敢为、勇敢和天真所感动
!
分析
- 对于这么一部爆红的动画电影。我想简单分析人们对
哪吒动画电影的评价状况
。那么就选择猫眼票房或者豆瓣
的短评爬下来分析了。 - step1:打开豆瓣主页
哪吒短评
的界面。F12打开调试点击页面下一页会发现有ajax数据交互。
- step2:分析这个接口,发现
无加密
。返回的是json套html
需要解析处理一下。用网页访问这个接口。但是你会发现一旦你访问页面靠后
它就拒绝访问
了。提示你要登录再访问。
- step3:思路很清晰了。只需要登录—>访问接口爬取存储—>可视化分析即可
具体步骤
登录
- 账密登录fiddler抓包发现可以
直接发送请求登录
。大胆猜测没有cookie限制。登陆后即可访问接口!
- 程序方面只需要根据参数进行模拟即可,登录完将cookie保存。后面的访问都带着这个cookie即可。
登录部分代码为:
import requests
import urllib.parse
from http import cookiejarurl='https://accounts.douban.com/j/mobile/login/basic'
header={'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',
'Referer': 'https://accounts.douban.com/passport/login_popup?login_source=anony','Origin': 'https://accounts.douban.com','content-Type':'application/x-www-form-urlencoded','x-requested-with':'XMLHttpRequest','accept':'application/json','accept-encoding':'gzip, deflate, br','accept-language':'zh-CN,zh;q=0.9','connection': 'keep-alive','Host': 'accounts.douban.com'}
data={'ck':'','name':'','password':'','remember':'false','ticket':''
}
def login(username,password):global datadata['name']=usernamedata['password']=passworddata=urllib.parse.urlencode(data)print(data)req=requests.post(url,headers=header,data=data,verify=False)cookies = requests.utils.dict_from_cookiejar(req.cookies)print(cookies)return cookies
爬取与存储
- 通过api的规则拼凑,抓下来的数据。我们主要需要
评价星
,和评论语句
。 - 使用Beautifulsoup进行dom解析。使用
xldr
、xldw
将数据写入excel文件中。一个页面20条。页面url增加直到出现异常
为止停止。
主要代码实现:
def getcomment(cookies):start=0w = xlwt.Workbook(encoding='ascii')ws = w.add_sheet('sheet1')index=1while True:try:url = 'https://movie.douban.com/subject/26794435/comments?start='+str(start)+'&limit=20&sort=new_score&status=P&comments_only=1'start+=20req = requests.get(url,cookies=cookies)res = req.json()res=res['html']soup = BeautifulSoup(res, 'lxml')node = soup.select('.comment-item')#print(node[0])for va in node:name = va.a.get('title')star = va.select_one('.comment-info').select('span')[1].get('class')[0][-2]comment = va.select_one('.short').textprint(name, star, comment)ws.write(index,0,index)ws.write(index, 1, name)ws.write(index, 2, star)ws.write(index, 3, comment)index+=1except Exception as e:print(e)breakw.save('nezha.xls')
- 对于爬取的结过一览
可视化分析
- 我们要对评分进行统计、词频统计。还有就是生成词云展示。而对应的就是
matplotlib
、WordCloud
库。
评分统计:
- 对于评分统计,使用数组将上面的
1,2,3,4,5
,五个分数段读取时候写入,根据数据画出饼状图分析即可。
- 从上图也可以知道,对于评分,大部分还是分布在5分和4分的,占比分别为
41.2%
和33.4%
.而2分和1分时非常少!这足以说明这部片绝对不是烂片或者争议不是很大。一部片不可能满足所有人。存在不满意的都在三分
但依然能够接受。所以从评分分布来看哪吒还是广受支持的!
词频统计:
- 根据jieba分词。统计前面热词出现的次数。反应观众
共鸣点
。 - 这里感谢楼下评论给的建议,有些词语无关性较大,我将它剔除去噪(例如这个,那个,这是等等)。
- 可以看的出国产、大圣(大圣归来对比).这些热门话题直戳心头!
词云展示:
- 相比词频,词云无法看到词语的准确数量,但是可以看的到更多词汇、人们的评价。笔者这里通过count()类(map)对分词结果进行词频统计。统计完的词频排序
前300个
词展示在2个词云上。这些词语的出现频率均大于10.所以还是有所参考价值额
。
- 可以从词云简单分析出大家还是很满意的,充满浓浓
封神色彩
、动画风格
、不屈的争斗
、国产的激动
!在票房直逼30亿的情况下!我、要去看了。
代码
- 顺便给出可视化分析部分代码:
import matplotlib.pyplot as plt
import matplotlib
import jieba
import jieba.analyse
import xlwt
import xlrd
from wordcloud import WordCloud
import numpy as np
from collections import Counter
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
matplotlib.rcParams['axes.unicode_minus'] = Falsedef anylasescore(comment):score=[0,0,0,0,0,0]count=0for va in comment:try:score[int(va[2])]+=1count+=1except Exception as e:continueprint(score)label='1分','2分','3分','4分','5分'color = 'blue', 'orange', 'yellow', 'green', 'red' # 各类别颜色size=[0,0,0,0,0]explode=[0,0,0,0,0]for i in range(1,5):size[i]=score[i]*100/countexplode[i]=score[i]/count/10pie = plt.pie(size, colors=color, explode=explode, labels=label, shadow=True, autopct='%1.1f%%')for font in pie[1]:font.set_size(8)for digit in pie[2]:digit.set_size(8)plt.axis('equal')plt.title(u'各个评分占比', fontsize=12)plt.legend(loc=0, bbox_to_anchor=(0.82, 1)) # 图例# 设置legend的字体大小leg = plt.gca().get_legend()ltext = leg.get_texts()plt.setp(ltext, fontsize=6)plt.savefig("score.png")# 显示图plt.show()
def getzhifang(map):x=[]y=[]for k,v in map.most_common(15):x.append(k)y.append(v)Xi = np.array(x)Yi = np.array(y)x = np.arange(0, 15, 1)width = 0.6plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.figure(figsize=(8, 6)) ##指定图像比例: 8:6plt.bar(Xi, Yi, width, color='blue', label='热门词频统计', alpha=0.8,)plt.xlabel("词频")plt.ylabel("次数")plt.show()return
def getciyun_most(map):x = []y = []for k, v in map.most_common(300):x.append(k)y.append(v)xi=x[0:150]xi=' '.join(xi)print(xi)backgroud_Image = plt.imread('nezha.jpg') # 如果需要个性化词云wc = WordCloud(background_color="white",width=1500, height=1200,#min_font_size=40,mask=backgroud_Image,font_path="simhei.ttf",max_font_size=150, # 设置字体最大值random_state=50, # 设置有多少种随机生成状态,即有多少种配色方案) # 字体这里有个坑,一定要设这个参数。否则会显示一堆小方框wc.font_path="simhei.ttf" # 黑体# wc.font_path="simhei.ttf"my_wordcloud = wc.generate(xi)plt.imshow(my_wordcloud)my_wordcloud.to_file("img.jpg")xi=' '.join(x[150:300])my_wordcloud = wc.generate(xi)my_wordcloud.to_file("img2.jpg")plt.axis("off")def anylaseword(comment):list=['这个','一个','不少','起来','没有','就是','不是','那个','还是','剧情','这样','那样','这种','那种','故事','人物','什么']list.append("这个")print(list)commnetstr=''c = Counter()low=Counter()index=0for va in comment:seg_list = jieba.cut(va[3],cut_all=False)index+=1for x in seg_list:if len(x) > 1 and x != '\r\n':try:c[x]+=1except:continuecommnetstr+=va[3]for (k, v) in c.most_common():if v<5 or k in list:c.pop(k)continue#print(k,v)print(len(c),c)getzhifang(c)getciyun_most(c)#print(commnetstr)
def anylase():data = xlrd.open_workbook('nezha.xls') # 打开xls文件table = data.sheets()[0] # 打开第i张表comment = []for i in range(1, 500):comment.append(table.row_values(i))# print(comment)anylasescore(comment)anylaseword(comment)if __name__ == '__main__':anylase()
结语
- 如果自己需要可以到github下载项目完整代码。当然,只需要更改部分即可同理分析其他电影。
- 项目
依然有不够完善地方
,如影评,对不同评分的平均不同处理、其他不同角度如评论用户性别、地点等等等等,这里不做延申。 - 如果对
后端、爬虫、数据结构算法
等感性趣欢迎关注我的个人公众号
交流(回复 爬虫 即可获得学习资料一份!):bigsai
持续输出分享!
哪吒票房逼近40亿,用python爬取哪吒短评分析相关推荐
- python画哪吒_哪吒票房逼近30亿,python爬取哪吒短评分析
目录 前言 分析 具体步骤 登录 爬取与存储 可视化分析 结语 前言 暑期档电影惨淡,但随着哪吒爆红开拓了新局面.这也是国产动画的首次爆红.在哪吒刚出,笔者以为最多10亿就算不错的了.没想过仅过了几天 ...
- 详解使用Python爬取豆瓣短评并绘制词云
使用Python爬取豆瓣短评并绘制词云 成果如下(比较丑,凑合看) 1.分析网页 打开想要爬取的电影,比如<找到你>,其短评如下: 查看源代码 发现短评存放在<span>标签里 ...
- python爬取豆瓣短评_爬取并简单分析豆瓣电影短评
导语 利用Python爬取并简单分析豆瓣电影短评. 说起来挺逗的,去年爬豆瓣短评的时候还是可以爬个几万条数据的,昨天我还想着终于可以起个唬人的标题了,什么爬取了xxx电影的xxx万条数据. 于是昨晚写 ...
- Python - 爬取豆瓣短评评论
Python - 爬取豆瓣短评评论 import requests from bs4 import BeautifulSoup import re import time# 保存豆瓣评分 source ...
- 哪吒票房逼近30亿,从豆瓣短评简单分析人们对哪吒的态度
目录 前言 分析 具体步骤 登录 爬取与存储 可视化分析 结语 前言 暑期档电影惨淡,但随着哪吒爆红开拓了新局面.这也是国产动画的首次爆红.在哪吒刚出,笔者以为最多10亿就算不错的了.没想过仅过了几天 ...
- python爬取豆瓣短评_爬虫-爬取豆瓣短评
爬虫-爬取豆瓣短评 啥是爬虫? 按照一定的规则,自动地抓取互联网信息的程序. 为啥要用爬虫? 可以利用爬虫自动地采集互联网中的信息,采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在 ...
- Python爬取并简单分析2024年普通高校招生专业(专业类)选考科目要求
推荐教材: <Python网络程序设计(微课版)>,ISBN:978-7-302-58312-7,董付国,清华大学出版社,2021年8月出版,京东.当当.淘宝均有销售 配套资源: 教学大纲 ...
- python爬取豆瓣短评_Python爬取豆瓣指定书籍的短评
Python爬取豆瓣指定书籍的短评 #!/usr/bin/python # coding=utf-8 import re import sys import time import random im ...
- python爬取豆瓣短评_用python实现豆瓣短评通用爬虫(登录、爬取、可视化分析)
原创技术公众号:bigsai 前言 在本人上的一门课中,老师对每个小组有个任务要求,介绍和完成一个小模块.工具知识的使用.然而我所在的组刚好遇到的是python爬虫的小课题. 心想这不是很简单嘛,搞啥 ...
最新文章
- windows系统下Python环境的搭建及Selenium的安装
- WPF中触发器Trigger、MultiTrigger、DataTrigger、MultiDataTrigger、EventTrigger几种
- 不存在类型或空间名称ConfigurationManager解决办法
- ora 12541无监听程序
- 鲁迅散文——狗的驳诘
- dubbo源码解析(四十一)集群——Mock
- 1818国民经济核算
- 【牛客 - 181D】小叶的巡查(树的直径,数学)
- 技术实践 | ICDE2021-大规模知识图谱预训练及电商应用
- ionic 支持float吗_机器人协会 | 一起拼机器人吗?
- Spring-AnnotatedBeanDefinitionReader
- 现阶段硕士的困境:读博没决心,不读也闹心…
- 将根据时间戳增量数据方案修改为根据批次号增量数据方案
- 【读书笔记】Python黑帽子黑客与渗透测试编程之道(一)
- 扫盲 BT Sync——不仅是同步利器,而且是【分布式】网盘
- 一款不错的图片自动向上翻滚的代码
- 支持向量机SVM和最小二乘支持向量机LSSVM
- 2020 ECCV 所有论文及补充材料链接(一)
- 软件工程改错题例题:请将下面的非结构化程序改成结构化程序
- matlab 投影法,梯度投影法 MATLAB程序可执行