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 websockettry:import thread
except ImportError:import _thread as thread
import json
import timedef 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 tokendef 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 = 521000app_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_openws.run_forever()

后续会更新直播间详情的信息爬取。

注:

此博客纯手工,如有和其他博主的博客雷同或涉及到侵权,请麻烦联系一下我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/252505.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

虎牙财报奏响游戏直播艰难进行曲

今年年初新冠疫情爆发,实体经济企业全面停摆,企业职工纷纷休业宅家,带动“宅经济”的发展,直播、视频、电商平台成为受益者。 虎牙作为国内领先的游戏直播平台之一,也成为这场“宅经济”的受益者。 近日,…

爬取虎牙TV全站主播信息

""" Created by Young on 2019/1/16 17:00 """from bs4 import BeautifulSoup import requests import json as js import reheaders {user-agent:}#之前爬取错了,这个只能爬取一页 def parsing_webpage(url):wb_data requests.get(url,header…

虎牙归顺斗鱼隐,这是游戏的失败和腾讯的胜利

孙悟空擅长翻跟头,据说一个跟头可以翻十万八千里。但翻至天边,依然在如来的掌心之中。 2016年,直播平台乘着风口,携资本之威,轰轰烈烈地搞出了千播大战的盛况。 王思聪带着熊猫,励志要搭建一个文娱帝国&…

虎牙滑块验证

今天来分享一下关于虎牙滑块的验证流程,涉及的验证流程以及加密的方式其实也还是有点麻烦,具体的验证流程作者给出一个代码段大家可以看看 1:注册token --https://df.huya.com/web/df/token 2:获取sdid --https://df.huya.com/web/df/collect 3:登录 --ht…

再见,斗鱼!再见,虎牙!

△Hollis, 一个对Coding有着独特追求的人△ 这是Hollis的第 313 篇原创分享 作者 l 孤桐 来源 l Hollis(ID:hollischuang) 10月12日,斗鱼和虎牙共同宣布,正式接受大股东腾讯提出的合并邀约,进行战略合并。同…

虎牙“维稳”,斗鱼“自救”

配图来自Canva可画 谈及游戏直播行业的大事件,不得不提斗鱼和虎牙的“短暂求和”。2020年10月,游戏直播平台斗鱼和虎牙宣布,接受大股东腾讯提出的合并邀约进行战略合并;2021年7月,由于未能通过反垄断审查,…

css+html+对错号,错号怎么打 接着点击符号/其他符号;

Word 里怎么打出对号和错号? Word 里怎么打出对号和错号? 就是 勾 和 叉 了。 材料/工具:word2010 在菜单栏中打开“插入”菜单栏 在“插入”菜单栏中找到“符号”,点击进入“插入符号”栏 在“插入符号”栏中点击“其他符号” 从…

特殊数学符号

L的特殊写法 \ellℓ \ell ℓ 幂集符号 \documentclass{article} \usepackage[mathscr]{euscript} \let\euscr\mathscr \let\mathscr\relax% just so we can load this and rsfs \usepackage[scr]{rsfso} \newcommand{\powerset}{\raisebox{.15\baselineskip}{\Large\ensurem…

基于NodeJS英雄联盟游戏游戏综合网站

21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存储达到…

LDQM UDQM

 一、sdram的介绍SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存储器,同步是指 Memory工作需要同步时钟,内部的命令的发送与数据的传输都以它为基准;动态是指存储阵列需要不断的刷新来…

图文教你下载英雄联盟League of Legends手游版

本文图文教你如何下载英雄联盟手游公测版(即League of Legends:Wild Rift),主要讲解iOS版的下载方式,毕竟iPhone没有越狱的话只能通过苹果应用商店(App Store)下载APP。 拳头游戏公司(Riot Gam…

IoU、GIoU、DIoU、CIoU

IoU就是我们所说的交并比 作为损失函数会出现的问题(缺点) 如果两个框没有相交,根据定义,IoU0,不能反映两者的距离大小(重合度)。同时因为loss0,没有梯度回传,无法进行学习训练。IoU无法精确的反…

IOU/ GIOU/ DIOU/ CIOU loss

转载自大白老师深入浅出Yolo系列之Yolov3&Yolov4&Yolov5核心基础知识完整讲解 由于文章过长,故特意截取,以便查阅: 目标检测任务的损失函数一般由Classificition Loss(分类损失函数)和Bounding Box Regeressi…

英雄联盟 League of Legends for Mac(LOL美服)

哪里有英雄联盟 mac美服版下载?今天小编为大家带来最新版的英雄联盟 League of Legends for Mac美服下载,这款风靡全球的游戏不止在国内,就连欧美,东南亚还是韩国都是非常受欢迎的,LOL美服同国服一样拥有数百个独特个性…

nn.KLDivLoss

KLDivLoss 作用: 用于连续分布的距离度量;并且对离散采用的连续输出空间分布进行回归通常很有用;用label_smoothing就采用这个; 公式: 公式理解: p(x)是真实分布,q(x)是…

Who wants to play League of Legends with me? 谁想和我玩英雄联盟呀?

At a glance: 速览: Full-year games revenues up to $27 billion, accounting for 31% of $87.9 billion total revenues 全年游戏收入高达270亿美元,占879亿美元总收入的31% International games show largest growth, but domestic games still lead…

sqlserver 无法远程连接到服务器,解决SQLServer远程连接失败的问题

解决SQLServer远程连接失败的问题 机房收费系统异地发布的时候,需要保证数据库能够远程连接,但连接的时候通常会报错: 要解决这个问题,首先需要检查SqlServer 的几项设置。(这些设置一般都是系统默认项,不过最好看一下) (一)检查SQL Server是否允许远程链接。以SqlServer …

宽带连接远程计算机691,联网错误691什么意思,错误691已拒绝远程连接-

有时候大家联网时会遇到一些问题,比如:在进行宽带连接时,系统会提示出现错误,错误代码691。 这是怎么回事呢?其实错误691是我们在日常拨号上网时经常遇见的问题,并不用太担心无法解决。 它出现的原因主要有几个方面&a…

关于AIR724UG接入TLINK云平台(未完成)

Tlink物联网-工业物联网平台 mqttfx.org mqtt.fx下载网址 sscom V5.13.1 有关设备:AIR724UG,SSCOM串口调试工具,mqtt.fx串口调试工具,友善串口调试助手。上面是TLink云平台以及mqtt协议相关窗口调试助手网址。 本着想为我们自己…

连接学校无线网显示服务器拒绝访问,192.168.1.1拒绝访问怎么办? | 192路由网

问:为什么设置路由器时,在浏览器中输入192.168.1.1,结果显示拒绝访问,这个问题怎么解决? 答:如果是在设置路由器的时候,登录192.168.1.1被拒绝访问,多半是你自己操作有问题导致的,请仔细阅读下面的解决办法。 温馨提示: 下面只介绍了电脑登录192.168.1.1拒绝访问的解…