之前已经分享了一些货币基金的接口,而近期分享1个股票的接口。
关于股票的接口主要分为2种类型:
实时的
历史的
下面我们分别来说明。
实时的
对于实时的股票,我们可以使用 http://hq.sinajs.cn/list=sh601988 ,在这里sh601988是股票的代码。当然还支持多个股票的实时信息,只需要在list参数中的代码使用逗号分隔即可,以上内容搜索来自网络,也是拿来就用。
历史的
对于历史的股票,我们可以使用 http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/XXXX.phtml?year=2017&jidu=1 ,在这里XXXXX表示股票的代码,不过我们需要剔除一些非数字的部分,比如上述的接口应该为:
http://money.finance.sina.com.cn/corp/go.php/vMS_MarketHistory/stockid/601988.phtml?year=2017&jidu=1
然后使用lxml等工具解析页面即可得到对应的数据了。
使用tushare包
另外,在Python中有1个tushare的工具包可以很好的实现上述的操作,我们可以使用pip进行安装:
pip install tushare
然后对应的文档地址是 http://tushare.waditu.com/ 。
可能在实际中遇到的比较多的问题是,比如我查询的日期那天没有数据,比如星期六日:
>>> import tushare as ts
>>> df = ts.get_tick_data('601988',date='2017-08-27')
>>> df
time price change volume amount type
0 alert("当天没有数据"); NaN NaN NaN NaN NaN
1 window.close(); NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN
可以发现这一天没有数据。实际上从这个结果也可以发现,tushare实际也是调用了某个接口从页面爬取数据的这么1个过程。
对于这种情况,那么我们更多的是想获取停牌前1天交易日的数据,对于这种情况,我们可以这样来操作:
import tushare as ts
df = ts.get_hist_data('601988')
df.values[0].tolist()
这样我们就得到了停牌前1天 2017-08-25 日的交易数据:
[4.06,4.22,4.21,4.06,3654764.0,0.15,3.69,4.064, 4.032,4.017, 1957732.3,1918619.68,2317328.87,0.17]
其分别对应:
open,开盘价
high,最高价
close,收盘价
low,最低价
volume,成交量
price_change,价格变动
p_change,涨跌幅
ma5,5日均价
ma10,10日均价
ma20,20日均价
v_ma5,5日均量
v_ma10,10日均量
v_ma20,20日均量
turnover,换手率
更多说明可以参考官方文档。