【问题标题】:Scraping data over websockets通过 websocket 抓取数据
【发布时间】:2020-10-06 02:42:54
【问题描述】:

我正在尝试从这个特定网页获取每日价格数据:

https://www.londonstockexchange.com/stock/CS1/amundi/company-page

这些数据显示在图表中。

我没有办法尝试获取这些数据。我假设这些数据是通过在浏览器控制台中建立和检索的 websocket 连接之一传输的。

enter image description here

我尝试模拟 websocket 连接并发送与前端应用程序相同的二进制文件。

from websocket import create_connection

s = create_connection("wss://82-99-29-151.infrontservices.com/wsrt/2/4")

hex_1 = "3e000000010..."
hex_2 = "13000000010..."
hex_3 = "1e000000010..."

ws.send(binascii.unhexlify(hex_1))
ws.send(binascii.unhexlify(hex_2))
ws.send(binascii.unhexlify(hex_3))

result =  ws.recv()

然后我尝试使用以下所有可能的编码来解码此响应:

import binascii
from encodings.aliases import aliases

for v in [v for k, v in aliases.items()]:
    try:
        print(result.decode(v))
    except:
        print(f"ERROR {v}")

当然,我没有可以利用的可解释输出。我可以认为这里使用了密码。但我不知道如何进一步调查。

你对此有什么想法吗? :)

提前致谢!

阿尔科

编辑 1

enter image description here

我们可以看到一个给定日期的值为 16990 的数据点。这就是我要查找的图表的整个时间序列。

【问题讨论】:

  • 嗨 AL Ko,欢迎来到 Stackoverflow。我查看了您要从中抓取的网站,该网站似乎也在通过 JSON(休息请求)将此信息传输到您的浏览器:api.londonstockexchange.com/api/gw/lse/instruments/alldata/CS1 如果您要查找的数据在此 JSON 中,您可以相对容易地向该 URL 发出获取请求。请注意,某些网站不喜欢或禁止数据抓取,格式错误的脚本很快就会对他们看起来像是 DOS 攻击,并阻止您。在将这些数据用于个人或公共用途之前,请先阅读它。
  • 您是否通过 crome 开发工具对其进行了检查?它是否使用标头或任何其他身份验证或令牌?
  • 感谢您的快速答复!我注意到了这些数据,但它不是我正在寻找的数据。我想让完整的时间序列出现在图表上。 CF编辑
  • 嘿 Prashant,是的,我正在使用 Chrome 开发工具。确实,我可以在请求标头中找到一个 Sec-WebSocket-Key 和一个 Sec-WebSocket-Version。

标签: python web-scraping encoding websocket scrapy


【解决方案1】:

在您阅读我的评论并了解有关抓取的信息并决定谨慎进行之后,

Python 只需几行代码即可检索此 JSON

import requests
url = "https://api.londonstockexchange.com/api/gw/lse/instruments/alldata/CS1"
response = requests.get(url=url).json()
# print some data from the json
print(response_json)
print(response_json.get("description"))
print(response_json.get("bid"))

我使用“网络”选项卡找到了这些数据,当您点击“重新加载”时会显示更多数据,但它们似乎是空的。

【讨论】:

  • 嗨!感谢您的重播。我注意到这些数据,不幸的是,这并不完整,我正在从图表中寻找完整的时间序列。 CF。编辑 1
  • 哦,是的,我重新阅读了您的问题,发现您特别要求提供图表数据。对不起,我的回答有点无关紧要。遗憾的是,我也无法理解这些数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 2013-11-20
  • 2020-02-07
相关资源
最近更新 更多