Websocket爬虫(初级)

2019-06-26  本文已影响0人  隐墨留白

有些网站为了追求数据的实时更新,很多时候会采用 websocket 的方式,例如股票交易数据、数据货币交易数据等。

那什么是websocket?

WebSocket是一种在单个TCP连接上进行全双工通信的协议。它使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

爬取目标
那到底这些数据如何才能爬取到呢?

http请求可以用requests库,但是websocket就需要用到websocket库。

如果你够仔细的话就会发现一个规律,下一页数据的握手请求数据就只是page后面的数字改变了一下,所以再次修改代码,获取前5页的数据。

import websocket
import json
from time import sleep
wbsocket_url = 'wss://api-v1.eosflare.io/socket.io/?EIO=3&transport=websocket'
ws = websocket.create_connection(url=wbsocket_url,timeout=10)
for i in range(2):
    content = ws.recv()
    print(content)
# 爬取前5页数据
for page in range(5):
    sleep(3)
    data = '42["message","{\\"_url\\":\\"/chain/get_user_whales\\",\\"_method\\":\\"POST\\",\\"_headers\\":{\\"content-type\\":\\"application/json\\"},\\"page\\":' + str(page) + ',\\"limit\\":50,\\"sortBy\\":\\"total\\",\\"ascending\\":false,\\"lang\\":\\"zh-CN\\"}"]'
    ws.send(data)
    content = ws.recv()
    str_dic = list(eval(content[2:]))[1]
    data = json.loads(str_dic)['holders']
    for i in data:
        print(i)
ws.close()
上一篇 下一篇

猜你喜欢

热点阅读