b站python弹幕签到_B站弹幕实时效果python

如题:如何实现B站直播弹幕呢?

分析过程:

进入B站官网--->随便点个直播房间--->F12抓包,刷新

分析每一条请求,点响应,找到弹幕信息。如图

232cfce66730

9467542-87cd9693e40e6819.png

可以看出返回信息是json格式的,提交方法是POST,再分析一下提交参数

232cfce66730

9467542-56c85c3cc1739848.png

还有两个参数是我怀疑是跟登陆有关系,不登陆不会提交这个两个数据,推测一下,我并没有登陆帐号,所以测试一下登陆帐号的结果。先记录一下没登陆系统给我生成的cookie

232cfce66730

9467542-a3e4cec52fb3ef4a.png

登陆后看一下提交的数据:

232cfce66730

9467542-7a91561ca66215cd.png

[图片上传中...(9467542-3aaadaa8b1760e6e.png-4d615d-1513748527154-0)]

再看一下cookie

232cfce66730

9467542-3aaadaa8b1760e6e.png

果然,在这里。但是第三个参数是没有的。

所以构造字典提交数据的时候把这个值提交上。因为这个值只有在登陆的时候有。但是楼主测试过,不提交这个值也是可以获取数据的。

分析完成。

代码部分:

importrequests, time

url ='https://api.live.bilibili.com/ajax/msg'# POST请求,向这个网址提交数据

#构造POST提交参数

form = {'csrf_token':'',

'roomid':'3742025',

'token':''

}

#循环提交数据,达到实时获取弹幕信息效果,通过调试发现,太快只提交一次数据的话弹幕可能会重复,故,暂停一下。

#但是暂停一下提交,还是可能获取到重复的数据。故这里采用前后数据进行比较的方法防止弹幕重复,当然你也可以用多次比较。

while True:

html1 = requests.post(url,data=form)#开始提交数据

text1 =list(map(lambdaii: html1.json()['data']['room'][ii]['text'],range(10)))#获取数据,因为返回的数据是json格式,故可以用分层切片来取到弹幕那层,然后用map和lamda函数的用法取得弹幕信息,最后直接转换成list

time.sleep(5)#暂停5秒,再提交数据

html2 = requests.post(url,data=form)

text2 =list(map(lambdaii: html2.json()['data']['room'][ii]['text'],range(10)))

bilibili_txt = [itemforitemintext2ifitemnot intext1]#比较两个弹幕信息,列表推导弹幕信息

fordanmuinbilibili_txt:

print('直播间实时弹幕:',danmu)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值