python获取虎牙弹幕_python爬取虎牙弹幕礼物数据
python爬取虎牙弹幕礼物数据
查看官方文档
找到弹幕传输的方式
生成websocket对应的参数
第一步:
第二步:
调通websocket
建立链接
获取数据和保持心跳
附上完整代码
注:
查看官方文档
官方文档链接:https://dev.huya.com/docs#/%E5%BC%80%E6%94%BEAPI%E6%8E%A5%E5%85%A5%E8%AF%B4%E6%98%8E
会看到官方已经提供对应的接口。咱们只需要根据文档通过python实现就行了。
找到弹幕传输的方式
这里咱们可以发现,是通过两种方式传输过来的。websocket和https这两种都能获取到弹幕的信息。下面介绍一下websocket的链接方式。
生成websocket对应的参数
其实官方文档已经告诉你了,怎么建立链接了。下面我一步一步根据官方文档走,可能是因为讲的太详细了,本人踩了一些坑。
第一步:
这里就说明了,需要用到jwt的验证。这里要注意的是Header,是默认的,根据你使用的jwt的方式默认的。不需要放在signature中。
第二步:
调通字段:header表明的是jwt的认证方式,HS256的加密算法。
payload这里面缺少了房间id,实际应该是
{
"iat":1556188391,
"exp":1556188991,
"appId":"xxxxxxxxxxxx",
"roomId":roomId
}
然后再用jwt根据文档做进一步处理。生成对应的Signature。python有第三方jwt库可以直接用
附上对应的方法
import jwt
def get_sign(room_id,app_id,secret):
payload = {
"iat":int(time.time()),
"exp":int(time.time())+600,
"roomId":room_id,
"appId":app_id
}
token = jwt.encode(payload,secret,algorithm='HS256')
return token
其中iat是当前时间戳,exp是当前时间戳加上600秒。app_id以及secret是你成为虎牙开发者的时候,会有这两个信息给到你的。
调通websocket
建立链接
根据上一步,把所有对应的参数都获取到了。然后通过python的webscoket链接的方式,先建立链接。
获取数据和保持心跳
这一步发送的是你想要获取到的数据,里面包含了很多数据。具体的数据详情见虎牙开发者官方文档。
再下一步是保持心跳。保持心跳的方式很简单,就是建立连接后,保持固定的时间,发送ping字符串即可。
附上完整代码
import jwt
import websocket
try:
import thread
except ImportError:
import _thread as thread
import json
import time
def get_sign(room_id,app_id,secret):
payload = {
"iat":int(time.time()),
"exp":int(time.time())+600,
"roomId":room_id,
"appId":app_id
}
token = jwt.encode(payload,secret,algorithm='HS256')
return token
def on_message(ws, message):
info = json.loads(message)
print(info)
def on_error(ws, error):
print(error)
def on_close(ws):
print("### closed ###")
def on_open(ws):
def run(*args):
ws.send('{"command":"subscribeNotice","data":["getMessageNotice","getVipEnterBannerNotice","getSendItemNotice","getOnTVAwardNotice", "getOpenNobleNotice", "getOpenGuardianNotice", "getUserMutedNotice"],"reqId":"123456789"}')
while True:
ws.send("ping")
time.sleep(10)
thread.start_new_thread(run, ())
if __name__ == "__main__":
room_id = 521000
app_id = 'xxxxxxxxxxxxxxxx'
secret = 'xxxxxxxxxxxxxxxxxxx'
sign = get_sign(room_id,app_id,secret)
print(sign.decode())
websocket.enableTrace(True)
ws = websocket.WebSocketApp(
"ws://ws-apiext.huya.com/index.html?do=comm&roomId="+str(room_id)+"&appId="+app_id+"&iat="+str(int(time.time()))+"&sToken="+sign.decode(),
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws.on_open = on_open
ws.run_forever()
后续会更新直播间详情的信息爬取。
注:
此博客纯手工,如有和其他博主的博客雷同或涉及到侵权,请麻烦联系一下我。
python获取虎牙弹幕_python爬取虎牙弹幕礼物数据相关推荐
- python获取天气分析_Python爬取南京市往年天气预报,使用pyecharts进行分析
上一次分享了使用matplotlib对爬取的豆瓣书籍排行榜进行分析,但是发现python本身自带的这个绘图分析库还是有一些局限,绘图不够美观等,在网上搜索了一波,发现现在有很多的支持python的绘图 ...
- python历史净值分析_Python 爬取基金历史净值数据
# -*- coding: utf-8 -*- """ * DataSource : 天天基金网 (http://fund.eastmoney.com/161005.ht ...
- python 图片识别服装_Python爬取某东羽绒服数据,用可视化帮你挑选心仪的衣服...
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章附带菜J学Python ,作者J哥 刚接触Python的新手.小白,可以复制下面的链接去免 ...
- python熊猫弹幕_Python爬取pandaTV弹幕
主要思路 对PandaTV直播间抓包分析得出的结论有: (1)通过GET请求获取弹幕服务器地址: (2)和弹幕服务器建立WebSocket连接后的具体过程需要在主页面引用的JS文件中找(建立连接.发心 ...
- python爬取的信息条数比页面显示多_Python爬取分析北京二手房数据?数据结果真的太吓人了...
有个朋友联系我,想统计一下北京二手房的相关的数据,而自己用Excel统计工作量太过于繁杂,问我用Python该如何实现. 构造要访问的URL 这里,我试着抓取北京海淀区二手房的相关数据.首先,是观察一 ...
- python爬斗鱼直播数据图片_Python爬取2000万直播数据——看20万游戏主播能否月入100万...
原标题:Python爬取2000万直播数据--看20万游戏主播能否月入100万 她那时候还太年轻,不知道命运赠送的礼物,早已暗中标好了价格. --茨威格 社会在发展,时代在进步.伴随着未曾停息的拥护声 ...
- 深圳python数据分析师招聘_Python爬取智联招聘数据分析师岗位相关信息的方法
Python爬取智联招聘数据分析师岗位相关信息的方法 发布时间:2020-09-23 23:23:12 来源:脚本之家 阅读:88 进入智联招聘官网,在搜索界面输入'数据分析师',界面跳转,按F12查 ...
- python登录网站后爬取数据_如何用 Python 登录主流网站,爬取一些需要的数据
最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录.作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据. 作者表示模拟登陆基本 ...
- selenium验证码登录_如何用 Python 登录主流网站,爬取一些需要的数据
最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录.作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据. 作者表示模拟登陆基本 ...
最新文章
- 识骨寻踪:少年,我看你骨骼清奇,不如来看看这本书。
- 1. Action 实现 ModelDriven 接口后的运行流程
- 字数监控,价格监控等
- haroopad故障
- 解决linux登录后总是时间过会就断开(解决ssh登录后闲置时间过长而断开连接)...
- 织梦DEDE网站后台如何上传附件
- 重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代
- conda命令增删查环境
- 20140708testC
- yudian温控表a1温度怎么补偿_贴片电容怎么确定型号
- Python实现股票数据下载工具
- js动态填充select
- vivado仿真脚本生成
- TOGAF ADM指导
- 怎么查询电脑的磁盘序列号和各种硬件信息(Windows系统)
- 基于Java的办公用品管理系统的设计与实现
- BASE16、BASE32、BASE64编码特征及正则匹配
- ncsi信号测试软件,模拟电路与数字电路的转换
- sklearn.neighbors
- RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayer-RTSP-Android解码获取视频帧的方法