某坤学学吴亦凡,Python可视化分析「大碗宽面」b站弹幕和网易云音乐评论

2019-05-07 11:19:51 浏览数 (1)

本文转载自Python知识圈,禁二次转载

阅读文本大概需要 5 分钟。

上周五也就是 4 月 19 号吴亦凡官方发布了一首歌:大碗宽面,这首歌的官方版 MV 也同步发布在 b 站上了,初听感觉这首歌和普通歌也没什么区别,其实这首歌是吴亦凡对自己的一种自黑的梗。原梗是两年前的一个综艺节目上,吴亦凡表演了即兴的freestyle,我们先来看看原梗的视频。

这段说唱播出后被各大网友 diss,b 站上出现吴亦凡的各种鬼畜视频,吴亦凡不但没生气,最近出的这首大碗汤面的单曲也是圈粉无数啊,连 stormzhang 张哥也发文表示路转粉了,哈哈。没听过这首单曲的,可以点击下面 MV 视频听一下。

这样的自黑也是很大度啊,不像某坤,律师函警告你,真的是:全靠同行衬托啊。

其实这首歌年初就准备好了,也就是在某坤律师函警告你我们之前就制作好了这首歌,这次发出来是因为在 4 月 20 号在南京有个演唱会。

网友的反响到底如何呢?这次我分析了下 b 站的弹幕,和网易云音乐的评论,做成了词云图,让我们一起来一看究竟吧。

b 站弹幕

我在 b 站找到了这首MV的官方发布视频,截止到 4 月 20 号已经有 7.9 万的弹幕了,我们用 F12 调试工具就可以查到这首 MV 弹幕的 cid 数据。

这样通过下面链接我们就知道了弹幕的数据了。

代码语言:javascript复制
http://comment.bilibili.com/87150521.xml

浏览器中打开这个链接我们可以看到只能显示 1000 条弹幕数据,那我们就来分析这 1000 条数据吧。

保存弹幕数据

为了防止频繁的爬起对 b 站服务器造成影响,我们一次性把这 1000 条弹幕先存在文件里。

把弹幕数据爬下来后,我们来看一下 csv 文件里的部分弹幕数据。

初步看一下上面的弹幕评论,大部分网友都在向吴亦凡道歉。

弹幕词云图

为了更清楚的看出网友的弹幕数据,pk 哥把这些数据进行分词后做成词云图,出现的词的次数多的话相应的字体也会比较大。

首先我们要导入要用到的几个库。

代码语言:javascript复制
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import pandas as pd
import jieba

然后我们对弹幕文件进行分析,统计词频并做成词云图。

代码中 font_path 表示的是电脑中用来显示词云图字体的路径,我用的是我 windows 电脑中的华文行楷字体,大家可以根据自己电脑存在的字体进行更换。

代码中我们还要给出生成词语图的背景图,我用的是吴亦凡的图片,为了防止侵权,pk 哥就不放出来背景图了,大家可以在 pk 哥公众号后台回复「skr」获取所有所有代码和背景图。

代码中我打印出词频前50的词,我们来看看。

代码语言:javascript复制
[('对不起', 80), ('凡哥', 59), ('对不起凡哥', 58), ('吴亦凡', 33), ('对不起吴亦凡', 26), ('好听', 25), ('了凡哥', 21), ('真的', 20), ('这个 这个', 17), ('哈哈哈', 16), ('对不起1', 15), ('男人', 14), ('这个 大又圆', 13), ('哈哈哈哈', 11), ('凡哥 谢罪', 11), ('谢罪 凡哥', 11), ('了吴亦凡', 10), ('电鳗', 9), ('徐坤', 9), ('凡哥凡哥', 9), ('徐坤 进来', 9), ('了1', 8), ('注入', 8), ('进来', 8), ('对不起对不起', 8), ('我错', 7), ('这个 面它', 7), ('喜欢', 6), ('了对不起', 6), ('吴亦凡凡哥', 6), ('前方', 6), ('好听凡哥', 6), ('面它 这个', 6), ('转粉', 5), ('好听吴亦凡', 5), ('男人吴亦凡', 5), ('对不起你 这个', 5), ('满分', 4), ('灵魂凡哥', 4), ('明星', 4), ('我们', 4), ('凡哥1', 4), ('厉害', 4), ('大又圆凡哥', 4), ('哈哈哈凡哥', 4), ('转粉凡哥', 4), ('哈哈哈吴亦凡', 4), ('道歉', 4), ('还是', 4), ('可爱', 4)]

给出词云图的名称就可以把词云图保存在代码同级目录下了。

从词云图中看出大部分网友都在向凡哥道歉、谢罪,都被圈粉了。

网易云音乐评论

我们再来看一下大碗宽面在网易云音乐上的评论。截止到我统计的时候,已经有将近 15 万的评论了。

打开 F12 调试,NetWork 可以看到热门评论和普通评论。

在 Headers 请求头里,我们可以看到评论数据的链接,我们看到这是 post 的请求。

页面往下滑,我们会看到这些请求参数是加密的。

怎么来破解这些加密呢?pk 哥稍微折腾了一下就放弃了,因为我找到了官方提供的非加密的接口。

代码语言:javascript复制
http://music.163.com/api/v1/resource/comments/R_SO_4_1359595520?limit=20&offset=0

其他歌曲的话把 R_SO_4_ 换成对应歌曲的 ID 就行,在网页版的云音乐进入对应的歌曲链接,最后会显示对应的 ID。

我们先写一个把网页内容转换为 Json 格式的方法。

热门评论词云图

接下来我们把热门评论生成词云图,生成的方法和弹幕数据生成词云图的方法类似,这里就不做赘述,直接看代码。

热门评论生成的词云图如下。

热门评论词语不太多,但隐约还是能看到坦荡和尊敬等字眼。

全部评论词云图

然后我们把普通评论也生成词云图,这里我只爬取了前 100 页的评论,为防止反爬,每爬取一页数据时我设置了随机等待时间。

普通评论生成的词云图如下。

普通评论的词就比较多,看起来也比较明显,「对不起」的占多数,「哈哈哈」的是其次,看来大部分人都在向吴亦凡道歉,对他这种自黑式的自嘲感觉很有意思,好感倍增。

本文的代码当然也适用于其他视频或者音乐的评论,如果你不想爬楼看评论,可以用此文的方法生成词云图,是不是很 skr。

PS:重要 skr 提醒,昨天的免费送 80 本 Python 书籍和当当优惠码 10000 份的活动还在继续,没参加的赶紧抓住这个清空个人书单购物车的机会了:送80本书 10000张优惠券,要干就干一票大的!,skr-skrrr。

本文所有代码和词云图在公众号后台回复「skr」获取。

0 人点赞