#设定获取数据的日期 date = ak . tool_trade_date_hist_sina ( ) date = date . loc [ date [ 'trade_date' ] >= '2019-01-01' ] df1 = pd . DataFrame ( ) for j in date [ 'trade_date' ] : print ( j ) #session = requests.Session() # s = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%Y%m') # s2 = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%d') #url = 'http://www.szse.com/api/report/ShowReport?SHOWTYPE=xlsx&CATALOGID=option_hyfxzb&TABKEY=tab1&txtSearchDate=%(j)s&random=%(r)s'%{'j':j,'r':random.random()} #'http://query.sse.com.cn/derivative/downloadRisk.do?trade_date=%(YM)s%(D)s&productType=0'%{'YM':s,'D':s2} url = 'http://www.szse.cn/api/report/ShowReport?SHOWTYPE=xlsx&CATALOGID=option_hyfxzb&TABKEY=tab1&txtSearchDate=%(j)s&random=0.5379373345285146' % { 'j' : j } print ( url ) response = requests . get ( url ) #print(response.content) 这一块本人很不满意,先保存再读取,多此一举。主要是因为直接显示发现乱码,本人无论如何都无法解析为正常结果, 只能先放到xlsx,之后重新读取保存。请诸位大虾见到给小弟一点帮助,如何解决。多谢!!!!!!!!!! """" with open ( 'D:/结果存放3.xlsx' , 'ab' ) as file_handle : file_handle . write ( response . content ) # 写入 # file_handle.write('\n') df = pd . read_excel ( 'D:/结果存放3.xlsx' ) df [ 'trade_date' ] = j df1 = df1 . append ( df ) df1 . to_csv ( 'szse.csv' )

爬取上交所

import csv
from contextlib import closing
import time
from urllib.request import urlopen
date = ak.tool_trade_date_hist_sina()
date =date.loc[date['trade_date']>='2019-01-01']
df1 = pd.DataFrame()
#//query.sse.com.cn/derivative/downloadRisk.do?trade_date=20201207&productType=0
for j in date['trade_date']:
    s = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%Y%m')
    s2 = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%d')
    url = 'http://query.sse.com.cn/derivative/downloadRisk.do?trade_date=%(YM)s%(D)s&productType=0'%{'YM':s,'D':s2}
    # 读取数据
    with closing(requests.get(url, stream=True)) as r:
        f = (line.decode('gbk') for line in r.iter_lines())
        reader = csv.reader(f,delimiter=',', quotechar=',')
        for row in reader:
            print(row)
            #print(row.reverse())
            df = pd.DataFrame(row)
            df1=df1.append(df.T)
df1.to_csv('sse.csv')

爬取中金所

import datetime
import requests
from lxml import etree
import pandas as pd
import akshare as ak
import time
date = ak.tool_trade_date_hist_sina()
date =date.loc[date['trade_date']>='2019-01-01']
df1 = pd.DataFrame()
for j in date['trade_date']:
    s = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%Y%m')
    s2 = datetime.datetime.strptime(j,'%Y-%m-%d').strftime('%d')
    url = 'http://www.cffex.com.cn/sj/hqsj/rtj/%(YM)s/%(D)s/index.xml?id=39'%{'YM':s,'D':s2}
    response = requests.get(url)
    p = etree.HTML((response.content))
    df = pd.DataFrame()
    for i in range(1,len(p.xpath('//dailydata'))):
        #print('//dailydata[{}]/instrumentid/text()'.format(i))
        # print(p.xpath('//dailydata[{}]/instrumentid/text()'.format(i)))
        #df.loc[i,'instrument']=p.xpath('//dailydata[{}]/instrumentid/text()'.format(i))
        try:
            #print((p.xpath('//dailydata[{}]/instrumentid[1]/text()'))[i])
            df.loc[i,'instrumentid']=(p.xpath('//dailydata[{}]/instrumentid/text()'.format(i)))
        except:
            df.loc[i,'instrumentid']=0
        try:
            df.loc[i,'tradingday']=(p.xpath('//dailydata[{}]/tradingday/text()'.format(i)))
        except:
            df.loc[i,'tradingday']=0
        try:
            df.loc[i,'openprice']=(p.xpath('//dailydata[{}]/openprice/text()'.format(i)))
        except:
            df.loc[i,'openprice']=0
        try:
            df.loc[i,'highestprice']=(p.xpath('//dailydata[{}]/highestprice/text()'.format(i)))
        except:
            df.loc[i,'highestprice'] =0
        try:
            df.loc[i,'lowestprice']=(p.xpath('//dailydata[{}]/lowestprice/text()'.format(i)))
        except:
            df.loc[i,'lowestprice']=0
        try:
            df.loc[i,'closeprice']=(p.xpath('//dailydata[{}]/closeprice/text()'.format(i)))
        except:
            df.loc[i,'closeprice'] = 0
        try:
            df.loc[i,'preopeninterest']=(p.xpath('//dailydata[{}]/preopeninterest/text()'.format(i)))
        except:
            df.loc[i,'preopeninterest'] = 0
        try:
            df.loc[i,'openinterest']=(p.xpath('//dailydata[{}]/openinterest/text()'.format(i)))
        except:
            df.loc[i,'openinterest'] = 0
        try:
            df.loc[i,'presettlementprice']=(p.xpath('//dailydata[{}]/presettlementprice/text()'.format(i)))
        except:
            df.loc[i,'presettlementprice'] = 0
        try:
            df.loc[i,'settlementpriceif']=(p.xpath('//dailydata[{}]/settlementpriceif/text()'.format(i)))
        except:
            df.loc[i,'settlementpriceif'] = 0
        try:
            df.loc[i,'settlementprice']=(p.xpath('//dailydata[{}]/settlementprice/text()'.format(i)))
        except:
            df.loc[i,'settlementprice'] = 0
        try:
            df.loc[i,'volume']=(p.xpath('//dailydata[{}]/volume/text()'.format(i)))
        except:
            df.loc[i,'volume'] = 0
        try:
            df.loc[i,'turnover']=(p.xpath('//dailydata[{}]/turnover/text()'.format(i)))
        except:
            df.loc[i,'turnover'] = 0
        try:
            df.loc[i,'productid']=(p.xpath('//dailydata[{}]/productid/text()'.format(i)))
        except:
            df.loc[i,'productid'] = 0
        try:
            df.loc[i,'delta']=(p.xpath('//dailydata[{}]/delta/text()'.format(i)))
        except:
            df.loc[i,'delta'] = 0
        try:
            df.loc[i,'expiredate']=(p.xpath('//dailydata[i]/expiredate/text()'.format(i)))
        except:
            df.loc[i,'expiredate'] = 0
    df1 = df1.append(df)
df1.to_csv('cffex.csv')

以上是爬取三大交易所期权数据的源代码,可以直接使用,也可以修改保存至数据库。

先从深交所开始:直接上传源码:from bs4 import BeautifulSoupfrom lxml import etreeimport pandas as pdimport akshare as akimport datetimeimport requestsimport csvfrom contextlib import closingimport timefrom urllib.request import urlopenimport requestsfrom urll
想要弄点数据要求高的可以找收费的数据服务商,例如wind,东方财富,后者便宜点,tushare也提供了期权行情数据,但是门槛是有积分限制,其他的地方只能爬取了。做期权策略分析没有数据怎么行,没钱就写一个吧。 新浪财经:https://stock.finance.sina.com.cn/option/quotes.html 主要涉及的接口 当前交易的期权合约月份 http://stock.finance.sina.com.cn/futures/api/openapi.php/StockO
Colly 主体类是 Collector类,Collector管理网络通信,当Collector的任务运行时也负责执行注册的回调函数。 初始化过程如下: c:=colly.NewCollector() 你可以注册不同的回调函数,通过Collector来控制任务或检索信息。 c.OnRequest(func(r *colly.Request) { //在Request请求之前调用 fmt.Println("Visit
期权回测中我用到了三种数据期权数据、ETF日数据期权合约数据。其中前两种数据的获取方法已经在本系列的第1篇文章中做了说明,这里补充一下怎么获取期权合约数据期权合约数据是从上交所深交所下载的。虽然深交所的合约可以手工下载excel文件再转化为CSV之后通过python程序读取。然而,如果需要长期持续地获取数据,最好还是通过爬虫自动爬取。 本文演示怎么通过scrapy爬虫获取上交所/深交所期权合约信息。假定读者对scrapy有一定的了解,知道scrapy的基础用法。对scrapy不了解的读者可以
python爬取新浪财经商品期权并生成excel表格连接Navicat然后将数据存入数据库 为什么在做了东方财富网的大商所爬取代码后还要搞一个这个? 因为新浪财经的看涨合约和看跌合约是在一块的(相当于一次要爬取两个模块还要进行排版) 这里先给大家捋一下逻辑 1.我是先将爬取下来的数据存为txt文件(因为不知道怎么直接存为excel文件) 2.然后将txt文件转化为excel文件 3.将excel文件导入数据库 在做的时候,要注意变量的命名,不要重复了。。然后一直爆红改错(泪啊都是) 附上代码如下 impor
先上代码:https://github.com/knotgd/option_data 可以获取期权tick数据、greeks数据、分时数据、k线数据、可以查询指定月份和时间的可交易看涨和看跌期权, 可以获取股票tick行情等 from apps.option_data import * 1、获取合约名称 test_contract_name = contract_name('10001011') print(test_contract_name) 50ETF购11月260
期货行情数据API接口一般由期货交易所或第三方数据提供商提供,可以用于获取实时或历史的期货行情数据。这些API接口通常提供以下数据: 1. 行情数据:包括期货合约的开盘价、收盘价、最高价、最低价、成交量、持仓量等。 2. 交易数据:包括期货合约的交易时间、买卖方向、成交价格、成交数量等。 3. 历史数据:包括期货合约的历史行情数据,可以用于技术分析和回测。 一些常用的期货行情数据API接口有: 1. 中金所期货行情API:由中国金融期货交易所提供,可以获取中金所所有期货品种的实时行情数据。 2. 大商所期货行情API:由大连商品交易所提供,可以获取大商所所有期货品种的实时行情数据。 3. 上期所期货行情API:由上海期货交易所提供,可以获取上期所所有期货品种的实时行情数据。 4. 郑商所期货行情API:由郑州商品交易所提供,可以获取郑商所所有期货品种的实时行情数据。 5. 第三方数据提供商API:如Wind、东方财富等,提供了全国各大期货交易所的实时行情数据和历史数据
antuptree8: 提示 codes <<= self.offsets ValueError: operands could not be broadcast together with shapes (12872,2) (3,) (12872,2) raise TypeError( TypeError: incompatible index of inserted column with frame index 请问如和解决 价值投资/指标选股(akshare) 2301_78361361: 请问最后结果怎么导出 量化学习——跟随龙虎榜交易 神出鬼没,指的就是我!: 没明白,关注私聊,发截图给我