首页 » Python » python采集b站弹幕逻辑及python脚本

python采集b站弹幕逻辑及python脚本

 

-0-受brave or 皮卡丘的启发,想试试采集b站的弹幕,因为以前采集过b站的700万基础数据,所以这次觉得应该也很简单
然而。
先说逻辑:找到b站弹幕调用方式->找出调用文件或者数据接口->采集数据入库。
第一步耗费的时间最多,因为我翻了好多名字里带av号的包,都没找到有弹幕内容的,幸亏 brave or 皮卡丘 提醒,我才发现b站竟然给字幕文件的命名不是按照av号来了。。然后通过network,就知道弹幕文件的地址应该是http://comment.bilibili.com/+和av号有关联的数字+.xml既然知道有这个猫腻,那下一步就需要找到av号和弹幕文件名之间的关联了。幸好,在视频的源代码里,有这个说明
python采集b站弹幕逻辑及python脚本
可以看到,红框部分一个是cid也就是弹幕文件的名字,一个是aid,也就是av号的名字。
这样,我们就可以知道弹幕文件地址是在http://comment.bilibili.com/16952307.xml里了。
这步一解决,后面就简单了。整个逻辑就变成
1.生成url
2.采集url代码
3.匹配到cid和aid
4.根据cid生成弹幕文件的url
5.匹配弹幕文件中的汉字
6.将aid和弹幕汉字入库。

下面贴代码:for循环的tab需要自己填上,也是为了引导大家更深入了解代码的结构和逻辑

import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
import urllib2,re,requests
danmu = open('danmu.txt','a')
for url in open('url.txt'):
#html = urllib2.urlopen('http://www.bilibili.com/video/av10262216/').read()
html = requests.get(url).text
#zhen.write(html +'\n')
#print html
for cid,aid in re.findall(r'cid=(\d+)&aid=(\d+)',html):
# print cid,aid
danmuurl='http://comment.bilibili.com/'+cid+'.xml'
danmuhtml = requests.get(danmuurl).text
# print danmuhtml
for danmuwenzi in re.findall(r'">(.*?)',danmuhtml):
danmu.write(aid+','+danmuwenzi+'\n')

原文链接:python采集b站弹幕逻辑及python脚本,转载请注明来源!

3