python爬取新浪财经股票期权行情数据
想要弄点期权数据,要求高的可以找收费的数据服务商,例如wind,东方财富,后者便宜点,tushare也提供了期权行情数据,但是门槛是有积分限制,其他的地方只能爬取了。
做期权策略分析没有数据怎么行,如果没钱就写一个吧。
新浪财经股票期权数据每秒更新4次(有人这么说,我也不知道怎么测试),全网更新最快,很多网站都使其数据,作为老牌互联网公司,稳定性也比较可靠。
Ctrl+U,查看页面源代码,
找到期权合约月份:Option_select: http://stock.finance.sina.com.cn/futures/api/openapi.php/StockOptionService.getStockName
{"result":{"status":{"code":0},"data":{"cateList":["50ETF","50ETF","300ETF"],"contractMonth":["2022-06","2022-06","2022-07","2022-09","2022-12"],"stockId":"510050","cateId":"510050C2206A02950"}}}
F12,打开开发者工具模式,待自动更新后,我们发现要提取的链接:
查看标头,URL :https://hq.sinajs.cn/list=CON_ZL_10004288
这是单个期权合约的信息,但是当我打开这个链接时,出现如下情况: Kinsoku jikou desu! (日本语禁止访问)
应该是反爬虫措施,把请求标头这一堆加上再试试
运行后正常显示:
import requests url = 'https://hq.sinajs.cn/list=CON_ZL_10004288' # 带有ZL表示为主力合约 headers = { 'Host': 'hq.sinajs.cn', 'Referer': 'https://stock.finance.sina.com.cn', 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36 Edg/102.0.1245.30' } r = requests.get( url, headers=headers, timeout = 5) print(r.text)
下面,只有找到所有期权的代码,然后在在网址“https://hq.sinajs.cn/list=”+“期权代码”即可找到所有期权的信息啦
我们发现这一堆数据和期权行权价数据个数相等,应该就是期权认沽或认购期权列表了,提取其代码进行测试即可。
按F5刷新,可以发现,第一个list中即包含了上述代码,
网址,我们也就很可以的拿到啦
UP为认购合约,DOWN为认沽合约。
测试一下,显示正常。
这样我们就可以把上面的代码整合一下,然后进行爬取,并保存的本地了。