欢迎访问
这是个实用的Python网站

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

吴亦凡官方发布了一首歌:大碗宽面,本文用 Python 分析了下 b 站的弹幕,和网易云音乐的评论,做成了词云图,让我们一起来一看究竟吧。

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

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

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

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

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

b 站弹幕

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

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

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

保存弹幕数据

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

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

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

弹幕词云图

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

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

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

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

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

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

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

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

网易云音乐评论

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

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

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

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

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

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

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

热门评论词云图

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

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

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

全部评论词云图

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

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

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

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

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

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

 

赞(0) 打赏
未经允许不得转载:Python知识圈 » 蔡徐坤学学吴亦凡,Python可视化分析「大碗宽面」b站弹幕和网易云音乐评论

评论 2

  1. #1

    想问一下time.sleep(int(format(random.randint(3,8))))这一块的format什么意思

    匿名4个月前 (06-03)回复
    • 格式化成str格式

      pk哥4个月前 (06-12)回复