AkShare-期货数据-连续合约数据,2010年的IFO怎么获取呢?

问题

如果存在问题大家肯定看过这篇文章,https://zhuanlan.zhihu.com/p/99808149 

但是遗憾的是没法获取到2010.4.26年的数据,朋友的研究需要2010年的数据。

比如到中国金融期货交易所 http://www.cffex.com.cn/lssjxz/ 只能找到每一天的数据,如果要处理下来是非常大的工作量

解决思路

相应的数据都是XML格式的,但是这就给了我们思路,通过python获取每一天的xml进行解析,获取里面的数据即可

废话不多说,最终结果,从2010.4.26开始

代码

python代码

import datetime
import re
import pandas as pd
import numpy as np
import urllib.request

url = f"http://www.cffex.com.cn/sj/hqsj/rtj/202103/25/index.xml"
# http://www.cffex.com.cn/error_page/error_404.html
begin = datetime.date(2015, 4, 16)
end = datetime.date(2021, 4, 25)

close_price = []
date_list = []
pSS = "IF"  # 相关指数
# 按时间遍历
for i in range((end - begin).days + 1):
    day = begin + datetime.timedelta(days=i)
    arr_ = str(day).split("-")
    day_ = arr_[0] + arr_[1] + '/' + arr_[2]
    url = f"http://www.cffex.com.cn/sj/hqsj/rtj/{day_}/index.xml"
    response = str(urllib.request.urlopen(url).read())
    if "<dailydatas>" not in response:
        print(f"{day_}:_无")
    else:
        result2 = ""
        strs = response.split("<dailydata>")
        for j in strs:
            # 找到中间是IF的
            pat = re.compile("<instrumentid>" + pSS + '(.*?)' + "</instrumentid>", re.S)
            result = pat.findall(j)
            if len(result) == 1:
                pat2 = re.compile("<closeprice>" + '(.*?)' + "</closeprice>", re.S)
                result2 = pat2.findall(j)[0]
                date_list.append(str(day))
                close_price.append(result2)
                break
        print(f"{day_}:_有_{result2}")
    print(url)

rs = []
rs.append(date_list)
rs.append(close_price)
h = ['日期', pSS + '_收盘价格']
rs = np.array(rs).T
df = pd.DataFrame(rs, columns=h, )
df.to_excel("./" + pSS + ".xlsx", index=False)

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值