如何爬取B站弹幕

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33612918/article/details/78287436

前言

主要记录自己完成爬虫的思路:从how to do到what to do
这是一个拿 python 练手的项目,虽说是入门级,但其余爬虫也万变不离其宗 ̄へ ̄
源代码地址 Github:bili-danmu

过程

1. 弹幕究竟是什么玩意

首先,让我们看看B站客户端是如何接收到弹幕的
这就需要让我们看看网页的源代码了

随便打开一个视频网页如下:

那么,弹幕是怎么加载进网页面的呢?
接下来让我们回忆一下http请求的过程:

0. 3次握手建立TCP连接
1. 浏览器得到页面,也就是html文件
2. 根据html文件里如<script>标签或<img>标签等继续像服务器请求相应的资源

可以想象,弹幕文件应该是在浏览器得到页面后像服务器请求得来的,也就是说,它隐藏在浏览器下载的文件中!不妨先假想一下:弹幕文件应该是一个JSON格式或者是XML格式的文件 这样才方便应用与管理

右键审查元素,打开网络面板,分析浏览器抓取下来的包,其中有一个文件引起了我们的注意:

这是一个xml文件,也是我们猜测的弹幕格式之一,查看它的内容:

很惊喜的发现,这不正是弹幕文件吗!  ̄へ ̄

2. 如何得到弹幕文件

查看弹幕文件的文件名:

全称http://comment.bilibili.com/6154070.xml 且看资源标识符6154070.xml 这应该便是唯一标志弹幕文件的文件名了

关于6154070.xml 这个文件名是如何来的?这只有在网页源代码中一探究竟。右键查看网页源代码,查找与6154070.xml 有关的字段:

但现在我们还是不能放心,对比其他视频后才终于发现,原来正是这个<script> 标签内的属性决定了弹幕文件名

分析完毕,接下来就是最快的编码工作了  ̄へ ̄

如何编写爬虫

其实分析到了这里,代码编写也是水到渠成的事了
我选择了 requestslxml 这种轻量级的库来编写
Talk is cheap. Show me the code. 废话不多说,完整代码请看 Github:bili-danmu

结语

对于爬虫来说,往往分析页面花费的时间大于编写代码的时间。总而言之,大概就是这么个流程,依葫芦画瓢也能搞定大部分网站内容的爬取  ̄へ ̄

猜你喜欢

转载自blog.csdn.net/qq_33612918/article/details/78287436