日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python websocket爬虫_详解python websocket获取实时数据的几种常见链接方式

發(fā)布時間:2023/12/15 python 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python websocket爬虫_详解python websocket获取实时数据的几种常见链接方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

第一種, 使用create_connection鏈接,需要pip install websocket-client (此方法不建議使用,鏈接不穩(wěn)定,容易斷,并且連接很耗時)

import time

from websocket import create_connection

url = 'wss://i.cg.net/wi/ws'

while True: # 一直鏈接,直到連接上就退出循環(huán)

time.sleep(2)

try:

ws = create_connection(url)

print(ws)

break

except Exception as e:

print('連接異常:', e)

continue

while True: # 連接上,退出第一個循環(huán)之后,此循環(huán)用于一直獲取數(shù)據(jù)

ws.send('{"event":"subscribe", "channel":"btc_usdt.ticker"}')

response = ws.recv()

print(response)

第二種,運行效果很不錯,很容易連接,獲取數(shù)據(jù)的速度也挺快

import json

from ws4py.client.threadedclient import WebSocketClient

class CG_Client(WebSocketClient):

def opened(self):

req = '{"event":"subscribe", "channel":"eth_usdt.deep"}'

self.send(req)

def closed(self, code, reason=None):

print("Closed down:", code, reason)

def received_message(self, resp):

resp = json.loads(str(resp))

data = resp['data']

if type(data) is dict:

ask = data['asks'][0]

print('Ask:', ask)

bid = data['bids'][0]

print('Bid:', bid)

if __name__ == '__main__':

ws = None

try:

ws = CG_Client('wss://i.cg.net/wi/ws')

ws.connect()

ws.run_forever()

except KeyboardInterrupt:

ws.close()

第三種,其實和第一種差不多,只不過換種寫法而已,運行效果不理想,連接耗時,并且容易斷

import websocket

while True:

ws = websocket.WebSocket()

try:

ws.connect("wss://i.cg.net/wi/ws")

print(ws)

break

except Exception as e:

print('異常:', e)

continue

print('OK')

while True:

req = '{"event":"subscribe", "channel":"btc_usdt.deep"}'

ws.send(req)

resp = ws.recv()

print(resp)

第四種,運行效果也可以,run_forever里面有許多參數(shù),需要自己設置

import websocket

def on_message(ws, message): # 服務器有數(shù)據(jù)更新時,主動推送過來的數(shù)據(jù)

print(message)

def on_error(ws, error): # 程序報錯時,就會觸發(fā)on_error事件

print(error)

def on_close(ws):

print("Connection closed ……")

def on_open(ws): # 連接到服務器之后就會觸發(fā)on_open事件,這里用于send數(shù)據(jù)

req = '{"event":"subscribe", "channel":"btc_usdt.deep"}'

print(req)

ws.send(req)

if __name__ == "__main__":

websocket.enableTrace(True)

ws = websocket.WebSocketApp("wss://i.cg.net/wi/ws",

on_message=on_message,

on_error=on_error,

on_close=on_close)

ws.on_open = on_open

ws.run_forever(ping_timeout=30)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。

時間: 2019-06-30

總結(jié)

以上是生活随笔為你收集整理的python websocket爬虫_详解python websocket获取实时数据的几种常见链接方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。