股票OHLC历史数据爬取——Yahoo

OHLC 指 open,high,low,close,老外的网站数据规范,相比从国内的网站获取股票、场内基金的数据,yahoo更可靠,JSON的数据结构也使得获取数据更方便、准确。

Yahoo API

过去python的pandas中直接提供了yahoo、google等数据的接口,pandas.io.data, 在《Python金融大数据分析》中有详细介绍,现在该接口已经移除,网上也有一些第三方的API,但也已经很久没有维护,失效了。

如果数据量不大,对频率要求不高,可以考虑直接从Yahoo网页直接提取数据。

API 接口

https://finance.yahoo.com/quote/510300.SS/history?period1=1511924498&period2=1543460498&interval=1d&filter=history&frequency=1d

510300.SS:股票代码
1511924498:起始日时间戳
1543460498:截止日时间戳
1d:频率,日

事先的处理

  • 日期转化为时间戳:
start_date = int(dt.datetime.strptime(start_date, "%Y-%m-%d").timestamp())
end_date = int(dt.datetime.strptime(end_date, "%Y-%m-%d").timestamp())
  • 代码转换
tick_suffix_dict = {'SH':'SS',
                    'SZ':'SZ',
                    'HK':'HK'}
  • freq 问题的处理
freq_dict = {"D":"1d", # 日
             "w":"1wk", # 周
             "m":"1mo" # 月}
  • url
 url = "https://finance.yahoo.com/quote/{}/history?period1={}&period2={}&interval={}&filter=history&frequency={}".\
format(tickCode,start_date,end_date,frequency,frequency)

获取JSON数据

 # 从网页上获取JSON数据
response = requests.get(url)
soup = BeautifulSoup(response.content,"lxml" )
    
script_json = json.loads(soup.find_all('script')[-3].text.split("\n")[5][16:-1])
prices_json = script_json['context']['dispatcher']['stores']['HistoricalPriceStore']['prices']

输出DataFrame

 prices = pd.DataFrame(prices_json)
 prices['date'] = prices['date'].apply(lambda x: dt.date.fromtimestamp(x))
 prices.set_index('date',inplace = True)
 prices.sort_index(inplace = True)

结果示例

ohlc_hist('510300.SH','2018-1-1','2018-11-27','m')
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • __ __ |__| _____ __ __ ┌...
    wangchuang2017阅读 11,908评论 2 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,178评论 19 139
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,192评论 2 89
  • 上高中时候一关系很好的同学毕业后常年在外各地跑,最近回了邹平,很多年未见自然少不了聚聚。要不总说邹平真是小呢,她家...
    略略略dd阅读 1,382评论 0 0
  • 星期一我和舅舅弟弟哥哥姐姐舅妈去运城逛,星期一早上,我们就出发了,今天天有点阴,所以今天就去李家大院,到了李家大院...
    周瑞博阅读 1,630评论 1 2

友情链接更多精彩内容