gpt4 book ai didi

Python 抓取 Websocket 数据

转载 作者:太空宇宙 更新时间:2023-11-04 00:30:54 41 4
gpt4 key购买 nike

我正在尝试在 Python 中使用 sockjs 从网站上抓取 websocket 数据(帧),但我真的不知道该怎么做。

网址:ws://example.io/sockjs/wkzeza/websocket

在网络调试器中我可以看到这个响应头:

Date: Sun, 27 Aug 2017 09:42:15 GMT
Connection: upgrade
Set-Cookie: oWG+Kel2MBo0v9FQK81NvuvBZcUwChaMvG2bsv1Ofs9Q8hHN+PlTn6PolO/8MgFXh2ygqC7A8WsJ7cgZwvpwvsbSp0VCpRHqmYMhGGxr; Expires=Sun, 03 Sep 2017 09:42:15 GMT; Path=/
Upgrade: websocket
Sec-WebSocket-Accept: HA0gkvrFCF7qjVYIDvSBa5sJKkg=
Sec-WebSocket-Extensions: permessage-deflate
Server: nginx
CF-RAY: 394e146d34a12f65-MAD

通常只有响应头我可以从帧中检索数据,对吧?

我试过这段代码,但我可以阅读内容:

from websocket import create_connection
import json

headers = json.dumps({'Date': 'Sun, 27 Aug 2017 09:42:15 GMT',
'Connection': 'upgrade',
'Set-Cookie': 'oWG+Kel2MBo0v9FQK81NvuvBZcUwChaMvG2bsv1Ofs9Q8hHN+PlTn6PolO/8MgFXh2ygqC7A8WsJ7cgZwvpwvsbSp0VCpRHqmYMhGGxr; Expires=Sun, 03 Sep 2017 09:42:15 GMT; Path=/',
'Upgrade': 'websocket',
'Sec-WebSocket-Accept': 'HA0gkvrFCF7qjVYIDvSBa5sJKkg=',
'Sec-WebSocket-Extensions': 'permessage-deflate',
'Server': 'nginx',
'CF-RAY': '394e146d34a12f65-MAD'})

ws = create_connection('ws://example.io/sockjs/wkzeza/websocket', header=headers)
response = ws.recv_data_frame()
print(response)

>> [1, <websocket._abnf.ABNF at 0x7efe29aa0da0>]

感谢您的帮助。

最佳答案

检查 Chrome(或其他浏览器)中的流量,了解您应该如何协商以开始数据流。协商确定后,您可以执行以下操作:

while True:
ws.recv()

这是 Chrome 中上行/下行 WebSocket 流量的示例。

enter image description here

只需复制消息并在 ws.send() 中使用它。示例:

ws.send('''{"H":"publicmaphub","M":"getData","A":[],"I":1}''')

示例来自挪威/斯塔万格公交车的实时 View : https://www.kolumbus.no/ruter/kart/sanntidskart-internt/?c=58.974238,5.691347,14&lf=all&vt=bus,ferry
(在该页面上,您还需要先通过 HTTPS 获取 token ,连接 WebSocket 并执行另一个 HTTPS 以启动流量。在此之后,您可以执行 ws.recv() 和 ws.send() 组合以开始获取数据。)

关于Python 抓取 Websocket 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45904624/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com