当前位置: 移动技术网 > IT编程>脚本编程>Python > 用python爬取B站弹幕并绘制词云

用python爬取B站弹幕并绘制词云

2020年07月08日  | 移动技术网IT编程  | 我要评论
弹琵琶的小姐姐是我学python的动力啊啊啊

最近在B站发现一个弹琵琶的小姐姐,真的是人美歌甜啊啊啊,所以打算爬取她的视频来分析弹幕同时制作词云。

查找相关信息之后发现,爬取B站弹幕的API接口有两个,分别是

https://api.bilibili.com/x/v1/dm/list.so?oid=cid
http://comment.bilibili.com/+cid+.xml

后面需要加上需要爬取的视频文件的cid。B站的每个视频都有自己独特的av号,bv号和cid。通过av号和bv号可以确定视频的地址,cid可以确定弹幕文件的地址。

任意打开一个弹幕文件,例如

http://comment.bilibili.com/197603144.xml

在这里插入图片描述
我们可以发现弹幕就在这个网页文件中。

  • 获取B站视频的cid
    打开B站,任意找一个视频,右键单击鼠标,点击“检查”。
    在这里插入图片描述
    打开视频,在右边的Network中找heartbeat文件,其中就有对应的cid(也有aid也就是av号和bvid也就是bv号)。
    在这里插入图片描述
import imageio as imageio   #加载图片
import requests             #发出请求
import re                   #内置库 用于匹配正则表达式
import csv                  #文件格式
import jieba                #中文分词
import wordcloud            #绘制词云

cid=input('please input a cid:')
#url = 'https://api.bilibili.com/x/v1/dm/list.so?oid='+cid
url='http://comment.bilibili.com/'+cid+'.xml'
#获取完整的弹幕文件url
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36"
}
#请求头,模仿浏览器行为
response = requests.get(url,headers=headers)
# print(response.content.decode('utf-8'))
html_doc = response.content.decode('utf-8')
#把编码转化为utf_8编码
res = re.compile('<d.*?>(.*?)</d>')
#正则表达式匹配弹幕
danmu = re.findall(res,html_doc)
#写入csv文件
for i in danmu:
    with open('b站弹幕.csv','a',newline='',encoding='utf-8-sig') as file:
        writer = csv.writer(file)
        danmu = []
        danmu.append(i)
        writer.writerow(danmu)
# 显示数据
f = open('b站弹幕.csv',encoding='utf-8')
txt = f.read()
print(txt)
f.close()

txt_list = jieba.lcut(txt)    #精确分词
string = ' '.join((txt_list))
img='C:/Users/lenovo/Pictures/20200505101029364.png'
#本地图片
mk = imageio.imread(img)
#控制词云形状的重要参数
w = wordcloud.WordCloud(max_font_size=70,
                        background_color='white',
                        font_path='C:/Windows/SIMLI.TTF',
                        mask=mk,
                        scale=3)
w.generate(string)   #生成词云的关键一步
w.to_file('pycloud.png')

在这里插入图片描述
在这里插入图片描述
到这里我们成功的找到B站的弹幕文件,同时按照词频生成了词云。关于更加详细的制作词云,也就是jieba库和wordcloud库的知识可以移步这篇文章https://blog.csdn.net/weixin_46530492/article/details/106832412

本文地址:https://blog.csdn.net/weixin_46530492/article/details/107190708

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网