哪吒票房逼近30亿,从豆瓣短评简单分析人们对哪吒的态度

目录

前言


  • 暑期档电影惨淡,但随着哪吒爆红开拓了新局面。这也是国产动画的首次爆红。在哪吒刚出,笔者以为最多10亿就算不错的了。没想过仅过了几天就破了10亿。接着头条又突破20亿--------目前11天27亿,势头增长依然很猛

那笔者就很好奇人们是怎么看待这一步电影的呢?

  • 哪吒?我想哪吒是陪伴过不少人成长的一部动画片吧,也是记忆中算得上最好看的动画片之一了。里面的哪吒、小猪熊、申公豹、石鸡娘娘令人历历在目。我们或许都被哪吒的敢打敢为、勇敢和天真所感动

分析

  • 对于这么一部爆红的动画电影。我想简单分析人们对哪吒动画电影的评价状况。那么就选择猫眼票房或者豆瓣的短评爬下来分析了。
  • step1:打开豆瓣主页哪吒短评的界面。F12打开调试点击页面下一页会发现有ajax数据交互。
  • step2:分析这个接口,发现无加密。返回的是json套html需要解析处理一下。用网页访问这个接口。但是你会发现一旦你访问页面靠后它就拒绝访问了。提示你要登录再访问。

  • step3:思路很清晰了。只需要登录—>访问接口爬取存储—>可视化分析即可

具体步骤

登录

  • 账密登录fidder抓包发现可以直接发送请求登录。大胆猜测没有cookie限制。登陆后即可访问接口!
  • 程序方面只需要根据参数进行模拟即可,登录完将cookie保存。后面的访问都带着这个cookie即可。

登录部分代码为:

import  requests
import urllib.parse
from http import cookiejar

url=‘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‘:‘‘
}##登录函数。post请求api。返回cookie。后面携带这个cookie访问接口
def login(username,password):
    global  data
    data[‘name‘]=username
    data[‘password‘]=password
    data=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解析。使用xldrxldw将数据写入excel文件中。一个页面20条。页面url增加直到出现异常为止停止。

    主要代码实现:
def getcomment(cookies):
   start=0
   w = xlwt.Workbook(encoding=‘ascii‘)
   ws = w.add_sheet(‘sheet1‘)
   index=1
   while True:##存入ws.write(hang,lie,value)
     try:
       url = ‘https://movie.douban.com/subject/26794435/comments?start=‘+str(start)+‘&limit=20&sort=new_score&status=P&comments_only=1‘
        start+=20
        req = 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‘).text
           print(name, star, comment)
           ws.write(index,0,index)
           ws.write(index, 1, name)
           ws.write(index, 2, star)
           ws.write(index, 3, comment)
           index+=1

     except Exception as  e:
          print(e)
          break
    w.save(‘nezha.xls‘)
  • 对于爬取的结过一览

可视化分析

  • 我们要对评分进行统计、词频统计。还有就是生成词云展示。而对应的就是matplotlibWordCloud库。

评分统计:

  • 对于评分统计,使用数组将上面的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 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‘] = False
##获取分数的饼图。用数组获取1-5分出现的次数
def anylasescore(comment):
    score=[0,0,0,0,0,0]
    count=0
    for va in comment:
        try:
            score[int(va[2])]+=1
            count+=1
        except Exception as e:
            continue
    print(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/count
        explode[i]=score[i]/count/10
    pie = 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.6
    plt.rcParams[‘font.sans-serif‘] = [‘SimHei‘]  # 用来正常显示中文标签
    plt.figure(figsize=(8, 6))  ##指定图像比例: 8:6
    plt.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):##300个词云分2个词云
        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):## 分词,去掉符号、换行等垃圾数据
    commnetstr=‘‘
    c = Counter()
    low=Counter()
    index=0
    for va in comment:
        seg_list = jieba.cut(va[3],cut_all=False)
        index+=1
        for x in seg_list:
            if len(x) > 1 and x != ‘\r\n‘:
                 try:
                    c[x]+=1
                 except:
                     continue
        commnetstr+=va[3]
    for (k, v) in c.most_common():
        if v<5:
            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 持续输出分享!

 

原文地址:https://www.cnblogs.com/bigsai/p/11320428.html

时间: 2024-11-05 21:59:43

哪吒票房逼近30亿,从豆瓣短评简单分析人们对哪吒的态度的相关文章

红包大战落下帷幕,QQ豪掷30亿之后小三位置有没有扶正?

 春节红包大战逐渐趋于尾声,活动之后的盘点和评论也逐渐多了起来.从活动的声势和用户参与的情况来看,今年的红包大战呈现了三强争霸的态势,微信.手机QQ.支付宝各有杀手锏.接下来我们不放盘点一下三大平台到底取得了怎样的战绩. 移动支付第一阵营盘点 从节后三方所公布的数据来看,详细数据如下: 阿里方面,据支付宝官方披露,从2月18日凌晨1点到2月19日凌晨1点的24小时内,共有6.83亿人次参与了支付宝的红包游戏,在24小时内,支付宝红包的收发总量超过2.4亿个,总金额达到40亿元. 腾讯方面,值

鼎锋这5年:从0到30亿 一个私募的创业传奇

导读:一个身无分文的青年,一个白手起家的公司,没有明星光环,从草根起步,在投资惨败的窘境中开始创业,从个体户到草台班子,历经6年牛熊轮回,如今成为管理30亿元规模的大型私募.这篇文章很长,但作为国内私募界少有的干货,我们强烈推荐细读,相信你一定能耐心读完.本文作者为鼎锋资产总经理李霖君,原文发表于2013年.注:文章出炉时鼎锋管理20亿资产,目前已超过30亿. 春节难得清闲,窝在家里随笔写写,有回忆有思考.像鼎锋这种小微的公司的5年,是多么微不足道,可鸿爪雪泥,一花一世界,应该留下个记号,祭奠往

宝钢与美国企业合作 30亿收购河南晋开化工资产

网易财经8月19日讯 宝钢集团人士今日表示,上海宝钢气体有限公司(下称:宝钢气体)和美国华平投资集团(下称:华平),已于近日与河南晋开化工投资控股集团达成协议,以30亿元收购其旗下的工业气体资产.据悉,宝钢气体和华平双方拟共同开拓.投资中国工业气体和清洁能源等领域. 华平董事总经理.亚洲区总裁黎辉表示,在当前国内积极推进经济结构调整.深化改革的大环境下,华平和宝钢的合作意义非凡,是华平积极参与国企改革的最新突破. 宝钢金属董事长贾砚林表示,此次和华平的合作,希望通过双方的战略合作,进一步推动宝钢

《我不是药神》票房超25亿 曝片段呈现群像式演技

网易娱乐7月17日报道7月17日,由文牧野导演.宁浩监制.徐峥监制并领衔主演的电影<我不是药神>首度曝光正片精彩片段:"治愈小队"夜店欢聚时,徐峥饰演的程勇为谭卓饰演的刘思慧出头,众主创们用精湛演技诠释出人物内心复杂情感,颇受观众赞誉.<我不是药神>作为"坏猴子72变电影计划"的力作,亦是宁浩徐峥五度联手.十二年后再度进驻暑期档的重磅作品,上映第12日,累计票房已突破25.32亿,累计观影总人次超过7261万,其中单日观影人次超过203.4万

上映4天,票房7.4亿的《海王》,用Python分析数据看大片!

写在前面 今天我要蹭个热点,我要用Python加上一些数据分析,来证明<海王>好看. <海王>一部电影带你重温<驯龙高手><变形金刚><星球大战><星河战队><铁血战士><安德的游戏><异形>可能还借鉴了对手的<钢铁侠>与<黑豹>剧情,再稍稍带一点<大鱼海棠>的味道,配上一丢丢温子仁式恐怖片套路,优秀的商业片,应该是DC年度最佳了.温子仁,优秀的集大成者. 上映4

2019年春节春晚红包大战战报!30亿!

我正在知识星球「赚钱笔记免费版」和朋友们讨论有趣的话题,你?起来吧?https://t.zsxq.com/ayVvVzB全网已公布的红包累计: 30亿!(1月29日更新)抖音入场,活动启动:集音符,瓜分5亿!(1月28日)百度正式公布红包计划:瓜分10亿,春节当天发9亿!(1月25日)今日头条红包计划启动:发财中国年,抢10亿现金!(1月24日)支付宝集福计划计划启动:集五福,瓜分5亿!支付宝: 5 亿 (集五福)今日头条: 10 亿 (集卡 & 红包雨)百度: 10 亿 (集福气 & 春

简单爬取《小丑》电影豆瓣短评生成词云

导语  在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给观众们留下的关键词是什么. 抓取数据  首先刚开始的时候 ,是通过requests去模拟抓取数据,发现短评翻页翻到20页之后就需要登录豆瓣用户才有权限查看,所以打算通过使用selenium模拟浏览器动作自动化将页面中的数据爬取下来,然后存储到特定的txt文件,由于没打算做其他的分析,就不打算存放到

用Python分析徐峥的数十万数据!这才是药神30亿票房的真正秘诀?

而最近徐峥凭借<我不是药神>在电影院也收了不少观众眼泪,在这部电影里面他颠覆了当初囧系IP电影和心花路放的搞笑印象.对于现实主义的题材作品,电影本身的成功不仅在题材的选取上,更是因为监制宁浩徐峥.导演文牧野和其他主演的一起合作. 进群:548377875   即可获取数十套PDF哦! 数据分析 首先来看看徐峥出演的电影中,评分排前10的电影名,<我不是药神>是徐峥目前评分最高的电影,这成绩完全可以算国产片里的现象级了. 还有极限挑战和向往的生活,徐峥作为临时嘉宾的那期节目也得到了不

春节档电影首日票房近8亿元 刷新单日纪录b

联合国伊拉克援助团日前在一份公报中说,2016年伊拉克至少有6878名平民死于暴力冲突和恐袭,上万人受伤.该机构说,由于无法核实冲突地区平民的伤亡人数,以及死于冲突引发的人道主义灾难的平民数量,上述平民死亡数字应该被视为"绝对最小值". 对涉及湖南正厅实职.纪检监察处级以上干部及区域性有重大影响等三类案件的线索处置和查办,湖南省纪委实行同步上报中央纪委,并督促市.县纪委落实好"查办腐败案件以上级纪委领导为主"的要求. 巴西汽车市场曾在2012年达到阶段性高峰,当年汽