Python爬取《明日之子》(腾讯视频)评论和弹幕,看看大家都在吐槽什么

微信公众号原文链接

今年夏天各电视和视频平台同步播出了许多音乐综艺节目,包括热度较高的《乐队的夏天》、《明日之子》、《声入人心》、《我是唱作人》、《中国新说唱》、《中国好声音》等。

以下是这几档节目来自豆瓣的评分,乐队的夏天以唯一8分以上的高分位居第一,我是唱作人 7.6,明日之子6.5,声入人心6.1,中国好声音5.3,中国新说唱5.2分。

小笨聪偶然听到几个女孩在谈论《明日之子》这档节目,比较好奇,就想着爬取一下《明日之子》的评论和弹幕,看看大家都在说什么东东。

一.评论及弹幕数据获取

腾讯视频为《明日之子》的播放平台,我们知道爬取视频类评论及弹幕数据一般有固定的格式,最重要的是获取视频 videoID 以及存放评论或弹幕的文档,以便找到它们对应的编号。

在谷歌浏览器下打开视频播放地址,向下滑动几页加载评论,使用开发者工具(F12)在源代码中即可看到 commentid,这里需要使用抓包工具。原理为找到并复制 url 地址,并一直循环到下一个存放评论的 id,这样就可以获取评论。

Headers 是查看自己浏览器中的 cookies,弹幕在腾讯视频中存放在多个叫 danmu 的 js 中,还需要使用到时间间隔,大概同上评论获取的方法。

1  # -*- coding: utf-8 -*-
2  import urllib.request
3  import re
4  import urllib.error
5  import sys
6  non_bmp_map = dict.fromkeys(range(0x10000, sys.maxunicode + 1), 0xfffd)
7  headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36     
         (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36")
8  openr = urllib.request.build_opener()
9  openr.addheaders = [headers]
10 urllib.request.install_opener(openr)
11 commentid= '6555778066593331820'
12 url = "https://video.coral.qq.com/varticle/4005898499/comment/v2? 
        callback=_varticle4005898499commentv2&orinum=10&oriorder=o&pageflag=1&cursor="+
        commentid+"&scorecursor=0&orirepnum=2&reporder=o&reppageflag
        =1&source=132&_=&_=1564890413257"
13 for i in range(0, 100):
14    data = urllib.request.urlopen(url).read().decode()
15    patnext = '"last":"(.*?)"'
16    nextid = re.compile(patnext).findall(data)[0]
17    # print(nextid)
18    patcom = '"content":"(.*?)",'
19    comdata = re.compile(patcom).findall(data)
20    for j in range(0, len(comdata)):
21        print("---第"+str(j)+"条评论内容是:")
22        print(eval('u"'+comdata[j]+'"').translate(non_bmp_map))
23    url = "http://video.coral.qq.com/filmreviewr/c/upcomment/0dfpyvfa7tp0ewe?commentid=" 
          + nextid + "&reqnum=3&callback=jQuery1124028619190818429263_1528385498744&_
          =1528385498747"
24    # print(url)

本文获取了《明日之子》第1-10期以及先导片的评论及弹幕共10w 多条,下面将对这些文字展开各方面分析(数据分析代码见文末)。

二.数据分析及可视化

1.关注度最高的是谁?

大多数人在发表看法时都会带自己喜欢支持的明星或选手名字,这也给出了一个很好的分析点,在分析出的词频TOP排序中筛选出排列前16的人名,其中包括了导师及选手。当然大家在讨论明星或选手涉及到一些别名,以下都是将这些名字归整后的数据,如华晨宇有花花、大哥,张钰琪有船长、大侠等别名。

其他还有一些出现错别字的情况也进行了合并。出现频率越高的人名其拥有的别称也越多,还有几个人都被称作大哥,如花大哥、山支大哥、苏大哥等。

上图可见华晨宇以8707词频的绝对优势占领讨论热度第一,当然这也与近几年他参加不少节目涨了很多粉丝有关。

而选手中讨论度第一的毫无疑问是5981词频的张钰琪(总决赛最强厂牌),讨论热度选手前4分别为张钰琪、By2、洪一诺、冯希瑶。

2.粉丝们爱说些什么评论?

在10w 条数据中使用python进行词频统计并输出前200词语,剔除人名后截取前面部分数据,发现每个人口中最频繁出现的词语都是一些非常正面积极的词语。 如喜欢、加油、可爱、好听、支持、实力等。但仍然很少出现与音乐相关的词语,大部分为与选手本身相关的。以下图右上角为词频,粉色区域面积也代表了出现的总频次。

(以上背景图来自明日之子官方造型,与词频分析无关)

将出现词频 TOP200 的词语制作成词云图如下,人名出现概率较高,其他形容的词语都较为积极正向。词云轮廓使用了明日之子水晶时代的图标。

3.当提及名字的时候,粉丝们都在说什么?

以下筛选出几位讨论度较热的名字,包括6位导师及6位选手,制作专属人名的词云,看看大家围绕他们都在讨论什么。

数据发现,提及 By2 时的词语有舞蹈、优秀、心疼,Veegee 为特别、适合,冯希瑶有支持、好听,洪一诺为风格、打动、复古,苏北北为苏哥、搞笑,张钰琪为支持、超级、期待。

华晨宇为可爱、点评、演唱会,龙丹妮为老板、龙姐、点评,毛不易为矜持、害羞、巨星,孟美岐为山支、啊啊啊、好看,宋丹丹为老师、花花、音乐、搞笑,孙燕姿为唱歌、女神、专业。

但总体各位选手讨论的热词有些没有太大变化,都和总体的讨论热词类似,也没有特别凸显选手的特点。

4.观众情感分析如何?

对所有数据进行情感分析,使用 python 的中文情感分析包 SnowNLP 输出情感值,其中分值在0-1之间,越靠近0表示情感越消极,越靠近1说明情感越积极。

并绘制了如下频率分布直方图。可见观众的情感是压倒性的偏向积极情感,当然也有部分消极情感的意见。

在大致分析了各个演员与每一集的情感之后发现并无太大变化,都偏向积极情感。

以下将情感分值低于0.1的部分评论和弹幕筛选出来做成了词云图,即看那些消极评论都在说什么。

可以看到,有些消极评论在吐槽腾讯视频的问题,有一些则是各家粉丝互怼的部分,还有关于节目对选手的问题被指责。

当然,节目好与坏都存在呼声和骂声,一档节目决定面向大众就意味着,不仅节目还包括里面的选手都面临被斥责的风险,尤其是最近火热的音乐类节目。但还是呼吁大家文明观看,不要以随意吐槽作为乐趣。

以上就是本次爬取《明日之子》评论和弹幕并可视化分析的过程。微信公众号“学编程的金融客”后台回复“明日之子”即可获取源码。【完】

微信公众号原文链接

往期推荐

1.爬取流浪地球影评

2.北上广深租房图鉴

3.大学排行榜可视化

4.爬取抖音视频

5.母亲节祝福代码

你的点赞和关注就是对我最大的支持!

发布了11 篇原创文章 · 获赞 11 · 访问量 5720

猜你喜欢

转载自blog.csdn.net/weixin_39270299/article/details/100175847