Я бы хотел получить данные об акциях от investing.com. После некоторого расследования я подумал, что моя жизнь будет намного проще, так как они используют веб-сокеты, но напрасно. Они используют какой-то механизм сердцебиения, который я не могу понять. Вот мой код:
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()
Любая помощь будет высоко оценена!