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爬取虎牙弹幕礼物数据相关推荐

  1. python获取天气分析_Python爬取南京市往年天气预报,使用pyecharts进行分析

    上一次分享了使用matplotlib对爬取的豆瓣书籍排行榜进行分析,但是发现python本身自带的这个绘图分析库还是有一些局限,绘图不够美观等,在网上搜索了一波,发现现在有很多的支持python的绘图 ...

  2. python历史净值分析_Python 爬取基金历史净值数据

    # -*- coding: utf-8 -*- """ * DataSource : 天天基金网 (http://fund.eastmoney.com/161005.ht ...

  3. python 图片识别服装_Python爬取某东羽绒服数据,用可视化帮你挑选心仪的衣服...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章附带菜J学Python ,作者J哥 刚接触Python的新手.小白,可以复制下面的链接去免 ...

  4. python熊猫弹幕_Python爬取pandaTV弹幕

    主要思路 对PandaTV直播间抓包分析得出的结论有: (1)通过GET请求获取弹幕服务器地址: (2)和弹幕服务器建立WebSocket连接后的具体过程需要在主页面引用的JS文件中找(建立连接.发心 ...

  5. python爬取的信息条数比页面显示多_Python爬取分析北京二手房数据?数据结果真的太吓人了...

    有个朋友联系我,想统计一下北京二手房的相关的数据,而自己用Excel统计工作量太过于繁杂,问我用Python该如何实现. 构造要访问的URL 这里,我试着抓取北京海淀区二手房的相关数据.首先,是观察一 ...

  6. python爬斗鱼直播数据图片_Python爬取2000万直播数据——看20万游戏主播能否月入100万...

    原标题:Python爬取2000万直播数据--看20万游戏主播能否月入100万 她那时候还太年轻,不知道命运赠送的礼物,早已暗中标好了价格. --茨威格 社会在发展,时代在进步.伴随着未曾停息的拥护声 ...

  7. 深圳python数据分析师招聘_Python爬取智联招聘数据分析师岗位相关信息的方法

    Python爬取智联招聘数据分析师岗位相关信息的方法 发布时间:2020-09-23 23:23:12 来源:脚本之家 阅读:88 进入智联招聘官网,在搜索界面输入'数据分析师',界面跳转,按F12查 ...

  8. python登录网站后爬取数据_如何用 Python 登录主流网站,爬取一些需要的数据

    最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录.作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据. 作者表示模拟登陆基本 ...

  9. selenium验证码登录_如何用 Python 登录主流网站,爬取一些需要的数据

    最近收集了一些网站的登陆方式和爬虫程序,有的通过 selenium 登录,有的则通过抓包直接模拟登录.作者希望该项目能帮助初学者学习各大网站的模拟登陆方式,并爬取一些需要的数据. 作者表示模拟登陆基本 ...

最新文章

  1. 识骨寻踪:少年,我看你骨骼清奇,不如来看看这本书。
  2. 1. Action 实现 ModelDriven 接口后的运行流程
  3. 字数监控,价格监控等
  4. haroopad故障
  5. 解决linux登录后总是时间过会就断开(解决ssh登录后闲置时间过长而断开连接)...
  6. 织梦DEDE网站后台如何上传附件
  7. 重磅 | 数据库自治服务DAS论文入选全球顶会SIGMOD,领航“数据库自动驾驶”新时代
  8. conda命令增删查环境
  9. 20140708testC
  10. yudian温控表a1温度怎么补偿_贴片电容怎么确定型号
  11. Python实现股票数据下载工具
  12. js动态填充select
  13. vivado仿真脚本生成
  14. TOGAF ADM指导
  15. 怎么查询电脑的磁盘序列号和各种硬件信息(Windows系统)
  16. 基于Java的办公用品管理系统的设计与实现
  17. BASE16、BASE32、BASE64编码特征及正则匹配
  18. ncsi信号测试软件,模拟电路与数字电路的转换
  19. sklearn.neighbors
  20. RTSP播放器网页web无插件直播流媒体音视频播放器EasyPlayer-RTSP-Android解码获取视频帧的方法

热门文章

  1. KNN(K最近邻)分类算法_糖潮丽子的博客
  2. MATLAB数据模拟潮汐现象,[MATLAB数学相关] 关于潮汐能仿真模拟求助
  3. 回顾:中网饱经沧桑劫后余生 万平国回首艰辛历程
  4. NAT SIP helper
  5. 蘑菇种植环境监测系统功能说明
  6. 智和网管平台-智能化实现灵活的网络管理
  7. win10文件夹移动位置导致的两系统文件夹路径一样
  8. JavaScript闭包(必考三座大山之二)
  9. 实现记事本的新建,保存,打开,另存为等功能
  10. 通过组件实现小程序底部Top按钮滑动到底部显示,其他情况则隐藏,点击按钮之后返回顶部的效果