首先,现在新浪接口在提交request请求的时候,需要提交表头。第二,金融期货的前缀要加CFF_RE_合约号(大写)。商品期货不知道为啥不用加前缀,反正就这样写吧。一定要注意,金融期货和商品期货返回的数据格式是不一样的,所以数据序号不通用。然后期货和股票返回的数据格式也是不一样的。
金融期货测试代码如下:
import requests
def getTick():#获取某股票最新成交价
url = "http://hq.sinajs.cn/list=CFF_RE_IF2206"
headers={'Referer':'https://finance.sina.com.cn/'}
page = requests.get(url,headers=headers)
stock_info = page.text
print(stock_info)
mt_info = stock_info.split(",")#爬取到数据信息
last = float(mt_info[3])
trade_datetime = mt_info[36] + ' '+ mt_info[37]#交易时间
tick = (last,trade_datetime)
return tick#得到股票最新成交价、时间
last_tick = getTick()#进入网页获取数据
print(last_tick)
数据结构含义:
- ['var hq_str_CFF_RE_IF2206="4018.000', ————名称,开盘价
- '4021.800',————最高价
- '3936.000',————最低价
- '3938.600',————收盘价
- '86225',————交易量(总手)
- '343305445.000',————不知道啥意思
- '137620.000',————持仓量
- '3938.600',————最新价
- '0.000',
- '4421.200',————涨停价
- '3617.600',————跌停价
- '0.000',
- '0.000',
- '4015.000',————昨日收盘价
- '4019.400',————昨日结算价
- '133790.000',————不知道啥意思
- '3938.400', ————买一价
- '1',————买一量
- '0.000',
- '0',
- '0.000',
- '0',
- '0.000',
- '0',
- '0.000',
- '0',
- '3939.000',————卖一价
- '4',————卖一量
- '0.000',
- '0',
- '0.000',
- '0',
- '0.000',
- '0',
- '0.000',
- '0',
- '2022-05-24',————交易日
- '15:00:00',————当前时间
- '0',
- '1',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '',
- '3981.507',————今日均价
- '沪深300指数期货2206";\n']