前面已经提取了其它期货交易所的数据,最后还剩下郑商所。相比而言,郑商所的数据获取比其它几个交易所更麻烦一点。因为郑商所的系统接口有两个,在2015年11月11日前后发生了切换,这个日期之前是老系统的api接口,这个日期之后是一个新的api接口。
具体的地址在哪里,还是依靠在浏览器中按F12来确定,最后发现的地址是:
if trade_date > '20151111':
czce_url = f'http://www.czce.com.cn/cn/DFSStaticFiles/Future/{trade_date[0:4]}/{trade_date}/FutureDataDaily.htm'
else:
czce_url = f'http://www.czce.com.cn/cn/exchange/{trade_date[0:4]}/datadaily/{trade_date}.htm'
数据格式方面,郑商所的情况跟大商所有些类似,都是返回一个html子页面,然后也提供txt和excel文件下载。因为之前已经处理过txt的格式,这里我们就来直接用http的格式处理一次。
其实http数据的处理也有很多方式,下面的代码就用python自带的HTMLParser来做这件事。这样做最大的优点是不用引入其它第三方的库了。
r = requests.get(czce_url, headers=headers)
parser = CzceHtmlParser()
parser.feed(r.content.decode())
data_origin = parser.data
这里的CsceHtmlParser要自己实现:
class CzceHtmlParser(HTMLParser):
def __init__(self):
super().__init__()
self.in_table = False
self.in_tr = False
self.in_td = False
self.last_tag = None
self.data = []
def handle_starttag(self, tag, attrs):
self.last_tag = tag
if tag == 'table' and (('id', 'senfe') in attrs or ('id', 'tab1') in attrs):
self.in_ta