python3 爬取区块链okb网行情图表数据

okb网 行情图标数据时刻都在变化,差不多每秒都会在变化,这对数据抓取难度有一定的难度,另外,数据使用动态js加载出来,并不是很好的抓取,实时变化的数据使用的websocket进行通信

(一)使用环境:

  • python3
  • pycharm2017

(二)抓取数据内容

image.png

主要抓取数据内容:
行情图表下的

USDT、BTC、ETH、OKB、合约下的
币种、最新价、24H涨跌幅、24H最低、24H最高、24H成交量

虽然表面上显示出这些数据,但是经过深入研究,发现数据量比这更多。
多出个10个字段左右。

(三)爬取思路
(1)右键查看网页源代码

image.png

发现这里面根本就没有币种的数据信息
so,数据肯定是ajax加载的。

(2)我们先看看合约的接口
https://www.okb.com/v2/futures/pc/market/marketOverview.do?symbol=f_usd_all

image.png

请求一下发现正是我们想要的数据,而且还有很多字段是上面的页面没有给出来的。

扫描二维码关注公众号,回复: 2453950 查看本文章

image.png

不过这里面的json是$的换算,而不是RMB单位。

使用相同的方法,我们也可以把合约前面的USDT、BTC、ETH、OKB也可以找出来。这里就不做多的解析描述了。
image.png

下面是一段代码

# -*- coding: utf-8 -*-
# @Time    : 2018/7/2 12:00
# @Author  : 蛇崽
# @Email   : [email protected]
# @File    : test_okb.py
#encoding:utf8
import requests
import json

headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.5478.400 QQBrowser/10.1.1550.400',
}

"""
获取合约币
"""
def getallheyue():
    url = 'https://www.okb.com/v2/futures/pc/market/marketOverview.do?symbol=f_usd_all'
    res = requests.get(url,headers=headers)
    if res.status_code == 200:
        jdata = json.loads(res.text)
        adata = jdata['ticker']
        # usdt 前十条
        alllist = []
        heyudata = adata
        for usdt in heyudata:
            symbol= usdt['symbolName'] # 币种
            last= usdt['last'] # 最新价格
            change= usdt['changePercent'] # 24H涨跌幅
            low= usdt['low'] # 24H最低
            high= usdt['high'] # 24H最高
            holdAmount= usdt['holdAmount'] # 24H最高
            volume = usdt['volume'] # 24H成交量
            day = str(usdt['contractId'])[4:8]
            list = {
                "币种":str(symbol).upper()+'(周)'+day,
                '最新价($)':last,
                '24H涨跌幅':change,
                '24H最低($)':low,
                '24H最高($)':high,
                '持仓量':holdAmount,
                '24H成交量':volume
            }
            alllist.append(list)
        return alllist
if __name__ == '__main__':
#     get_allmarket()
    getallheyue()

更多远程博客请访问:

徐代龙的技术专栏

个人博客:xudailong.gitee.io 福利网站:www.00reso.com

个人微信:hll643435675

猜你喜欢

转载自blog.csdn.net/xudailong_blog/article/details/81053784