前言
主要记录自己完成爬虫的思路:从how to do到what to do这是一个拿 python 练手的项目,虽说是入门级,但其余爬虫也万变不离其宗 ̄へ ̄
[源代码地址 Github:bili-danmu](https://github.com/regaliastar/bili-danmu)
过程
1. 弹幕究竟是什么玩意
首先,让我们看看B站客户端是如何接收到弹幕的
这就需要让我们看看网页的源代码了
随便打开一个视频网页如下:
那么,弹幕是怎么加载进网页面的呢?
接下来让我们回忆一下http请求的过程:
0. 3次握手建立TCP连接
1. 浏览器得到页面,也就是html文件
2. 根据html文件里如
可以想象,弹幕文件应该是在浏览器得到页面后像服务器请求得来的,也就是说,它隐藏在浏览器下载的文件中!不妨先假想一下:弹幕文件应该是一个JSON格式或者是XML格式的文件 这样才方便应用与管理
右键`审查元素`,打开网络面板,分析浏览器抓取下来的包,其中有一个文件引起了我们的注意:
这是一个xml文件,也是我们猜测的弹幕格式之一,查看它的内容:
很惊喜的发现,这不正是弹幕文件吗!  ̄へ ̄
2. 如何得到弹幕文件
查看弹幕文件的文件名:
全称`http://comment.bilibili.com/6154070.xml` 且看资源标识符`6154070.xml` 这应该便是唯一标志弹幕文件的文件名了
关于`6154070.xml` 这个文件名是如何来的?这只有在网页源代码中一探究竟。右键查看网页源代码,查找与`6154070.xml` 有关的字段:
但现在我们还是不能放心,对比其他视频后才终于发现,原来正是这个`
分析完毕,接下来就是最快的编码工作了  ̄へ ̄
如何编写爬虫
其实分析到了这里,代码编写也是水到渠成的事了我选择了 requests 与 lxml 这种轻量级的库来编写
Talk is cheap. Show me the code. 废话不多说,完整代码请看
[Github:bili-danmu](https://github.com/regaliastar/bili-danmu)
结语
对于爬虫来说,往往分析页面花费的时间大于编写代码的时间。总而言之,大概就是这么个流程,依葫芦画瓢也能搞定大部分网站内容的爬取  ̄へ ̄