T O P

[资源分享]     Python 爬取「后浪」弹幕,看看大家都在说什么

  • By - 楼主

  • 2021-03-02 22:15:40
  • Python 爬取「后浪」弹幕,看看大家都在说什么

    前天,正好是五四青年节, 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 由视频地址获取。

    Python 爬取「后浪」弹幕,看看大家都在说什么

    代码如下:

    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 拼入链接,在浏览器中看下结果:

    Python 爬取「后浪」弹幕,看看大家都在说什么

    是一份 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')

    结果就是下面这个样子:

    Python 爬取「后浪」弹幕,看看大家都在说什么

    从我们自己生成的词云图中可以看出,大多数的弹幕都是对「后浪」的评价都是赞美居多。

    评论区的评论我只翻了几页,实在是太多了,根本不可能手动全翻完。巧合的是,前几页还基本上都是赞美。

    这明显是有幸存者偏差的嘛,怎么可能一个作品全都是一边倒的赞美,完全不信的好伐。

    然后我一顿找,找到了原因, B 站的评论默认是按照热度来排序的,前面的评论基本上都是一些官方号的评论,个人的评论都被挤到后面去了。

    换成了按照时间排序,瞬间评论区就变样了,不过很正常,一千个人眼中有一千个哈姆雷特,每个人对作品的理解和看法不同,都是可以接受的。

    反对意见的人主要集中在两点:

    • 一点是视频其中所展示的内容大都不够普通,高空跳伞、环游世界、穿汉服跳舞、电竞捧杯……这些具有视觉冲击力的内容都太过美好,因而大量的声音在讽刺自己是被淘汰的后浪。
    • 还有一点是 B 站有 1.3 亿年轻人,过着平凡生活分享普通人生的人也不在少数,外卖小哥、工地女孩也都是活跃在B站上的年轻人,但B站没有选择展示他们,确实是对所谓「青年宣言」的重量看得太轻了。

    Python 爬取「后浪」弹幕,看看大家都在说什么

    不过我不持有任何观点,静静的看别人吃瓜就好。

    本帖子中包含资源

    您需要 登录 才可以下载,没有帐号?立即注册