通过websockets抓取Investment.com

2024-10-01 02:18:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我想从Investment.com上搜集股票数据。经过一番调查,我想我的生活会轻松很多,因为他们正在使用WebSocket,但都是徒劳的。 他们使用的是我无法理解的心跳机制。 以下是我目前的代码:

import time
import json
import ssl
import threading
from websocket import create_connection

def heartbeat():
    ws.ping()
    print("Heartbeat sent")
    time.sleep(1)

def consumer():
    while True:
        print(ws.recv())


headers = json.dumps({
    "Accept-Encoding" : "gzip, deflate, br",
    "Accept-Language" : "en,en-US;q=0.9",
    "Cache-Control" : "no-cache",
    "Connection" : "Upgrade",
    "Host" : "stream166.forexpros.com",
    "Origin" : "https://www.investing.com",
    "Pragma" : "no-cache",
    "Sec-WebSocket-Extensions" : "permessage-deflate; client_max_window_bits",
    "Sec-WebSocket-Key" : "R8v1AGX1O+XjJ/fjcJYkpA==",
    "Sec-WebSocket-Version" : "13",
    "Upgrade" : "websocket",
    "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36"
})

ws = create_connection('wss://stream166.forexpros.com/echo/269/hvnv9_dv/websocket',headers=headers, sslopt={"cert_reqs": ssl.CERT_NONE})

ws.send('["{\"_event\":\"bulk-subscribe\",\"tzID\":8,\"message\":\"pid-6408:%%pid-13994:%%pid-26490:%%pid-8274:%%pid-252:%%pid-6435:%%pid-6369:%%pid-6497:%%pid-941155:%%pid-1129317:%%pid-8839:%%pid-8874:%%pid-169:%%pid-166:%%pid-14958:%%pid-44336:%%pid-8827:%%pid-1:%%pid-2:%%pid-3:%%pid-5:%%pid-7:%%pid-9:%%pid-10:%%pidTechSumm-1:%%pidTechSumm-2:%%pidTechSumm-3:%%pidTechSumm-5:%%pidTechSumm-7:%%pidTechSumm-9:%%pidTechSumm-10:%%pidExt-6408:%%isOpenExch-2:%%isOpenExch-1:%%isOpenPair-8839:%%isOpenPair-8874:%%isOpenPair-44336:%%isOpenPair-8827:%%cmt-1-5-6408:%%domain-1:\"}"]')


c = threading.Thread(name='consumer', target=consumer)
h = threading.Thread(name='heartbeat', target=heartbeat)

h.start()
c.start()

任何帮助都将不胜感激


Tags: importcomjsonwstimeconsumersecpid