"""
火币有多少交易币对
读取k线数据
"""
from urllib.request import urlopen,Request
import json
import pandas as pd
import numpy as np
pd.set_option('expand_frame_repr', False) #当列太多时不换行
def get_url_content(url, max_try_number=5):
try_num = 0
while True:
try:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
request = Request(url=url, headers=headers)
content = urlopen(request, timeout=15).read()
return content
except Exception as http_err:
print(url, "抓取报错", http_err)
try_num += 1
if try_num >= max_try_number:
print("尝试失败次数过多,放弃尝试")
return None
def get_list_symbols_from_huobi():
# 创建一个空的df
df = pd.DataFrame()
# 构建url
url = 'https://api.huobipro.com/v1/common/symbols'
# 设置header
# headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
# request = Request(url=url, headers=headers)
content = get_url_content(url, 5)
# print(content)
# print(type(content))
# 转换格式
# content = content.decode("utf-8")
# print(content)
# print(type(content))
json_data = json.loads(content.decode("utf-8"))
json_data = json_data['data']
# print(json_data)
# print(type(json_data))
df = pd.DataFrame(json_data, dtype='str')
# print(df)
# print(type(df))
# 取某几列
df = df[['base-currency', 'quote-currency', 'symbol-partition']]
# 新增一列
df['base-quote'] = df['base-currency'] + df['quote-currency']
df['resource'] = 'huobi'
# 对df进行整理
df = df[['base-currency','quote-currency','base-quote','symbol-partition','resource']]
symbol_list = list(df['base-quote'])
# 存储数据
# df.to_csv('symbols.csv', index=False)
return symbol_list
# 获取k线数据
def get_candle_from_huobi(period='1day',size=1):
symbol_list = get_list_symbols_from_huobi()
# 创建一个空的df
df = pd.DataFrame()
# 遍历每一个symbol
for symbol in symbol_list[:20]:
print(symbol)
# 构建url
url = 'https://api.huobipro.com/market/history/kline?period=%s&size=%s&symbol=%s' % (period,size,symbol)
# print(url)
# exit()
# 抓取数据
# headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}
# request = Request(url=url, headers=headers)
content = get_url_content(url)
if content is None:
continue
# print(content)
# print(type(content))
# exit()
# 将数据转换成df
json_data = json.loads(content.decode("utf-8"))
# print(json_data['data'])
# exit()
_df = pd.DataFrame(json_data['data'], dtype='float')
# _df = _df.T
# print(_df)
_df['symbol'] = symbol
# print(_df)
df = df.append(_df,ignore_index=0)
# print(df)
#exit()
# 对df进行整理
df = df[['symbol','id','high','low','open','close','vol']]
# print(df)
# 重命名
df.rename(columns={'id':'time'},inplace=True)
# print(df)
df['time'] = pd.to_datetime(df['time'],unit='s') + pd.Timedelta(hours=8)
return df
df = get_candle_from_huobi(period='1day', size=1)
df.to_csv('all_kline.csv',index=False)