python3 爬取区块链okb网行情图表数据
2018-08-05 本文已影响235人
简书用户9527
okb网 行情图标数据时刻都在变化,差不多每秒都会在变化,这对数据抓取难度有一定的难度,另外,数据使用动态js加载出来,并不是很好的抓取,实时变化的数据使用的websocket进行通信
(一)使用环境:
- python3
- pycharm2017
(二)抓取数据内容
image.png主要抓取数据内容:
行情图表下的
USDT、BTC、ETH、OKB、合约下的
币种、最新价、24H涨跌幅、24H最低、24H最高、24H成交量
虽然表面上显示出这些数据,但是经过深入研究,发现数据量比这更多。
多出个10个字段左右。
(三)爬取思路
(1)右键查看网页源代码
发现这里面根本就没有币种的数据信息
so,数据肯定是ajax加载的。
(2)我们先看看合约的接口
https://www.okb.com/v2/futures/pc/market/marketOverview.do?symbol=f_usd_all
请求一下发现正是我们想要的数据,而且还有很多字段是上面的页面没有给出来的。
image.png不过这里面的json是$的换算,而不是RMB单位。
使用相同的方法,我们也可以把合约前面的USDT、BTC、ETH、OKB也可以找出来。这里就不做多的解析描述了。
下面是一段代码
# -*- coding: utf-8 -*-
# @Time : 2018/7/2 12:00
# @Author : 蛇崽
# @Email : 643435675@QQ.com
# @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