如何去使用Python爬虫来爬取B站的弹幕数据?

哔哩哔哩众所周知是弹幕的天堂,视频观看人数越多,弹幕也就越多。今天小千就来教大家如何去使用Python开发一个爬虫来爬取B站的弹幕数据。

1、弹幕哪里找?

平常我们在看视频时,弹幕是出现在视频上的。实际上在网页中,弹幕是被隐藏在源代码中,以XML的数据格式进行加载的:

1.jpg

XML和JSON、YAML一样是一种通用的标记信息表达方式,可以简单的理解为一种记录数据的格式。XML和描述网页的语言HTML非常像,所以你会在截图中看到<d></d>这样的标签。

那么上图这个弹幕文件的url是什么呢?

https://comment.bilibili.com/92542241.xml

它以一个固定的url地址+视频的cid+.xml组成。只要找到你想要的视频cid,替换这个url就可以爬取所有弹幕了(b站大部分网页给出的字幕限制是1000条)。

一个视频的cid在哪里呢?右键网页,打开网页源代码,搜索cid”就能找到:

cid在网页源码中是一个很常见的词组,而我们要寻找的正确的cid都会写成"cid":xxxxxxxx的形式。为了缩小搜索范围,在后方加上一个引号会更快搜索到。

有了正确的cid,拼好url,我们就来写爬虫吧!

2、爬虫库到底是什么?

基本所有初学Python爬虫的人都会接触到requests、BeautifulSoup这两个工具库,这是两个常用基础库。requests用于向网站url发起请求,以获取网页代码;BeautifulSoup用于将HTML/XML内容解析,并提取里面的重要信息。

3.jpg

这两个库模拟了人访问网页,读懂网页并复制粘贴出对应信息的过程,能够批量地、快速地完成数据爬取。

3、开始爬取

观察网页,可以发现,所有的弹幕都放在了<d>标签下,那么我们需要构建一个程序获取所有的<d>标签:

第一步,导入requests库,使用request.get方法访问弹幕url:

import requests

#获取页面数据html

url=r'https://comment.bilibili.com/78830153.xml'

r=requests.get(url)#访问url

r.encoding='utf8'

第二步,导入BeautifulSoup库,使用lxml解析器解析页面:

from bs4 import BeautifulSoup

#解析页面

soup=BeautifulSoup(r.text,'lxml')#lxml是常用的解析器,需要提前使用pip工具安装lxml库

d=soup.find_all('d')#找到所有页面的d标签

#print(d)

这样操作后,所有藏在d标签里的弹幕内容就被python抓取到了 :

4.gif

#解析弹幕,将弹幕、网址、时间整理为字典,最后加和成列表,共1000条数据

8.png

6.jpg

数据整理之后我们还可以进行分析,例如词汇量出现频率等等,这个可以根据需求来自由处理即可。

7.jpg

本文来自千锋教育,转载请注明出处。

猜你喜欢

转载自blog.51cto.com/15128702/2668077