Advertisement

中金所金融期货日统计数据爬取

阅读量:

基本思路

通过URL获取每个交易日统计的CSV文件,并从该CSV中解析出次月交割的股指期货统计数据

代码块

复制代码
    from io import StringIO  
    import csv  
    import urllib.request
    import re
    
    def get_csv(month,day):
    """构造URL下载日统计数据文件"""
    try:
        url='http://www.cffex.com.cn/sj/hqsj/rtj/2018'+month+'/'+day+'/2018'+month+day+'_1.csv' 
        data=urllib.request.urlopen(url).read().decode('ascii', 'ignore')  
        dataFile = StringIO(data)  
        csvReader = csv.reader(dataFile)  
        print(url)
        with open('data_cffex_IH.csv','a',encoding='utf-8',newline='') as csvfile:
        fieldnames=['time','code','open','highest','lowest','volume','inventory','close','settlement','zhangdie1','zhangdie2','implied volatility','delta']
        writer=csv.DictWriter(csvfile,fieldnames=fieldnames)
        time='2018'+month+day
        for row in csvReader:
    
            if row[0]=='IH18'+str(int(month)+1).zfill(2)+'                        ':  #row[0]=='IH18'+str(int(month)+1).zfill(2)+'                        '
                row.insert(12,time)
                print(row[12]+row[0]+'!')
    
                writer.writerow({'code':row[0],'open':row[1],'highest':row[2],'lowest':row[3],'volume':row[4],'inventory':row[5],'close':row[6],'settlement':row[7],'zhangdie1':row[8],'zhangdie2':row[9],'implied volatility':row[10],'delta':row[11],'time':row[12]})
    except:
        print("It is not a trading day! ")
    
    
    if __name__=='__main__':
    
    
    for month in range(1,2):  #改变range参数可以获取不同月份的日统计文件
        month=str(month)
        month=month.zfill(2)
        for day in range(1,32):  #提取31日的日统计文件
            day=str(day)
            day=day.zfill(2)
            get_csv(month,day)

全部评论 (0)

还没有任何评论哟~