专栏首页浊酒清味B站弹幕爬虫

B站弹幕爬虫

前言

B站作为弹幕文化的代表,有着非常丰富的弹幕资源。今天我们尝试对B站的弹幕进行爬虫并且绘制词云图展示爬虫结果。

爬虫方式

01

PART

众所周知,B站的内容非常丰富:

要想找到一个视频中的弹幕,我们其实有很多种方法。

给大家介绍Github上一个B站爬虫数据接口大全:

https://github.com/Vespa314/bilibili-api/blob/master/api.md

在这次爬虫中,我们使用【读取Up视频列表】的方式:

02

PART

基本信息

我们选取一位叫做【小时姑娘】的Up主来爬取:

注意上面网址中的id=99239148,这是个核心信息。

由于我们是数据接口是列表的形式,所以原则上可以爬取该Up主的所有视频信息。

但是,这次我们专注于一个视频。

没错,就是上面图片中第三个视频,播放量为80.3万的现场版【爱殇】。

这个视频来自于bilibili晚会。弹幕和播放量都够我们爬的。

爬虫代码

03

PART

我们爬虫的代码主要参考知乎的一个回答:

https://www.zhihu.com/question/56924570/answer/236892766

只需要根据Up主id信息以及视频在列表中位置就可以顺利爬虫:

import requests
import re
import os
import sys
import json

# B站API详情 https://github.com/Vespa314/bilibili-api/blob/master/api.md

# 视频AV号列表
aid_list = []

# 评论用户及其信息
info_list = []

# 获取指定UP的所有视频的AV号 mid:用户编号 size:单次拉取数目 page:页数
def getAllAVList(mid, size, page):
    for n in range(1,page+1): 
        url = "http://space.bilibili.com/ajax/member/getSubmitVideos?mid=" + str(mid) + "&pagesize=" + str(size) + "&page=" + str(n)
        r = requests.get(url) 
        text = r.text 
        json_text = json.loads(text) 
        print (json_text)
        # 遍历JSON格式信息,获取视频aid 
        for item in json_text["data"]["vlist"]: 
            aid_list.append(item["aid"]) 
    print(aid_list)
# 获取一个AV号视频下所有评论 
def getAllCommentList(item): 
    url = "http://api.bilibili.com/x/reply?type=1&oid=" + str(item) + "&pn=1&nohot=1&sort=0" 
    r = requests.get(url) 
    numtext = r.text 
    json_text = json.loads(numtext) 
    commentsNum = json_text["data"]["page"]["count"] 
    page = commentsNum // 20 + 1 
    for n in range(1,page): 
        url = "https://api.bilibili.com/x/v2/reply?jsonp=jsonp&pn="+str(n)+"&type=1&oid="+str(item)+"&sort=1&nohot=1" 
        req = requests.get(url) 
        text = req.text 
        json_text_list = json.loads(text) 
        for i in json_text_list["data"]["replies"]: 
            info_list.append([i["member"]["uname"],i["content"]["message"]]) 
    # print(info_list)

# 保存评论文件为txt 
def saveTxt(filename,filecontent): 
    filename = str(filename) + ".txt" 
    for content in filecontent: 
        with open(filename, "a", encoding='utf-8') as txt: 
            txt.write(content[0] +' '+content[1].replace('\n','') + '\n\n') 
        print("文件写入中")

if __name__ == "__main__": 
    # 爬取小时姑娘 只爬取第一页的第一个 
    getAllAVList(99239148,3,1) 
    for item in aid_list: 
        info_list.clear() 
        getAllCommentList(item) 
        saveTxt(item,info_list)

04

PART

词云图

我们将结果通过词云图的方式展示出来:

可以看出来,弹幕还是非常丰富多彩的。

有夸唱的好听的,有提到小时姑娘名字的,还有卧槽,哈哈哈。

值得注意的是里面有很多提到了东宫,查了一下资料才发现这首歌原来已经出现很久了:

大家感兴趣的话,可以去爬自己喜欢的视频哦。

·END·

本文分享自微信公众号 - Python与机器学习之路(gh_39aead19f756),作者:Huangwei AI

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python编程语言的核心是什么?

    我们需要一个用于WebAssembly的Python实现,这已经不是什么秘密了。它不仅将Python引入到浏览器中,而且由于iOS和Android都支持将Jav...

    HuangWeiAI
  • 那些被低估的Python库

    在这篇文章中,我们想展示一些不同于流行的东西。这些都是深夜浏览GitHub的感悟,以及同事们分享的压箱底东西。这些软件包中的一些是非常独特的,使用起来很有趣的P...

    HuangWeiAI
  • 请停止使用Excel进行数据分析,升级到Python吧

    2017年,全球估计有7.5亿人使用Excel。2017年,世界人口约为76亿。这意味着大约有10%的人使用Excel,我猜大部分是用于数据分析。

    HuangWeiAI
  • B站弹幕爬虫

    B站作为弹幕文化的代表,有着非常丰富的弹幕资源。今天我们尝试对B站的弹幕进行爬虫并且绘制词云图展示爬虫结果。

    数据森麟
  • SpringBoot : 30秒学会热部署配置

    源码之路
  • VMware虚拟机、centos以及securecrt的安装前言:vmware虚拟机:centos:secureCRT

    贪挽懒月
  • java准确的获取操作系统的名称

    在我们日常开发中,经常需要判断操作系统的版本或者系统的名字等等。这就需要我们用到jdk默认带的一些属性了。这里我对各个版本的系统都做了区分,分别能判断mac,l...

    业余草
  • Python之list、tuple

    前段时间看了看Python,最近在工作中频繁使用,发现自己对Python的掌握还是不够,于是决定,好好整理一阵子关于Python的东西,如果工作当天有更好...

    AsiaYe
  • shell命令基本知识点(下)

    特殊符号 *       任意个任意字符 ?       任意一个字符 #      注释字符 \      脱义字符 |       管道符 # cat /e...

    老七Linux
  • 迷宫游戏-解谜 攻略

    林万程

扫码关注云+社区

领取腾讯云代金券