
前天,正好是五四青年节, B 站的一条献给年轻人的视频「后浪」火了,一时间到处都是各种讨论「后浪」的声音。
其他的平台先不管,先看看 B 站平台本身用户对「后浪」的评价。
B 站的评论是弹幕的形式,想要知道 B 站用户的评价,就是要对弹幕做一次分析。
接下来的事情就简单了,打开 B 站,分析一波请求,然后把弹幕的数据抓取下来,最后做个简单的分析。
整个事情就是这么的朴实无华。
分析的过程就不演示了,直接从关键的节点开始介绍。
第一步是获取视频的 cid ,这个 id 是通过链接: https://api.bilibili.com/x/player/pagelist 来获取的,链接的格式:
https://api.bilibili.com/x/player/pagelist?bvid={bvid}&jsonp=jsonp
这里的 bvid 由视频地址获取。

代码如下:
import requests
res = requests.get("https://api.bilibili.com/x/player/pagelist?bvid=BV1FV411d7u7&jsonp=jsonp")
cid = res.json()['data'][0]['cid']
这样我们就获取到了 cid ,接下来再通过另一个接口获取弹幕信息,接口的格式:
https://api.bilibili.com/x/v1/dm/list.so?oid=xxxx
这里 oid 的值就是我们刚才获取的 cid ,把刚才获取到的 cid 拼入链接,在浏览器中看下结果:

是一份 xml 格式的文档,这里我也懒得再去找 xml 解析器了,直接使用正则匹配,将我们需要的信息提取出来,代码接着往下写:
danmu_url = f"https://api.bilibili.com/x/v1/dm/list.so?oid={cid}"
result = requests.get(danmu_url).content.decode('utf-8')
pattern = re.compile('<d.*?>(.*?)</d>')
danmu_list = pattern.findall(result)
这样,我们获得了一个弹幕的数组。
本次只是想看下评论的大体情况,比较好的方式是使用词云图,接下来我们使用 WordCloud 库来生成词云图。
没有安装 WordCloud 库的同学可以使用命令进行安装:
pip install WordCloud
如果已经安装过的同学可以接着写代码了:
wordcloud = wordcloud.WordCloud(font_path='msyh.ttc', width=900, height=1600).generate("".join(danmu_list))
wordcloud.to_file('wordcloud.png')
结果就是下面这个样子:

从我们自己生成的词云图中可以看出,大多数的弹幕都是对「后浪」的评价都是赞美居多。
评论区的评论我只翻了几页,实在是太多了,根本不可能手动全翻完。巧合的是,前几页还基本上都是赞美。
这明显是有幸存者偏差的嘛,怎么可能一个作品全都是一边倒的赞美,完全不信的好伐。
然后我一顿找,找到了原因, B 站的评论默认是按照热度来排序的,前面的评论基本上都是一些官方号的评论,个人的评论都被挤到后面去了。
换成了按照时间排序,瞬间评论区就变样了,不过很正常,一千个人眼中有一千个哈姆雷特,每个人对作品的理解和看法不同,都是可以接受的。
反对意见的人主要集中在两点:
- 一点是视频其中所展示的内容大都不够普通,高空跳伞、环游世界、穿汉服跳舞、电竞捧杯……这些具有视觉冲击力的内容都太过美好,因而大量的声音在讽刺自己是被淘汰的后浪。
- 还有一点是 B 站有 1.3 亿年轻人,过着平凡生活分享普通人生的人也不在少数,外卖小哥、工地女孩也都是活跃在B站上的年轻人,但B站没有选择展示他们,确实是对所谓「青年宣言」的重量看得太轻了。

不过我不持有任何观点,静静的看别人吃瓜就好。
本帖子中包含资源
您需要 登录 才可以下载,没有帐号?立即注册