Sivan Wu's blog

A developer, a learner

View on GitHub

获取国内股票数据

1. 安装支持的库

pip install pandas   ///数据分析工具包
pip install tushare   ///国内股票数据抓取工具,除了股票的实时和历史数据,还有基本面数据,加上自然语言处理(比如情绪分析),或者机器学习
pip install bs4   ///爬虫库
pip install lxml   ///xml解析

这里只是我安装罗列一些,可能你本地有些有了的,或者有些没有,具体运行的时候根据提示,安装对应的库

2. 范例

2.1 代码1

import tushare as ts  
d = ts.get_tick_data('601318',date='2017-06-26')  
print d  
e = ts.get_hist_data('601318',start='2017-06-23',end='2017-06-26')  
print e 
          time  price change  volume    amount type
0     15:00:00  49.72     --       0         0   卖盘
1     15:00:00  49.72  -0.01       0         0   卖盘
2     15:00:00  49.73     --      45    223785   买盘
3     14:59:59  49.73     --     328   1631144   买盘
4     14:59:56  49.73  -0.02     436   2168228   卖盘
5     14:59:53  49.75   0.02     110    547250   买盘
6     14:59:50  49.73   0.01      14     69622   卖盘
7     14:59:47  49.72  -0.01      20     99440   卖盘
8     14:59:44  49.73   0.01      70    348110   买盘
9     14:59:41  49.72     --     106    527032   卖盘
10    14:59:38  49.72     --      97    485565   卖盘
11    14:59:34  49.72  -0.01     635   3157319   卖盘
12    14:59:31  49.73   0.01     291   1447143   买盘
13    14:59:28  49.72     --     260   1292720   买盘
14    14:59:25  49.72     --     114    566808   买盘
15    14:59:22  49.72     --     101    502172   买盘
16    14:59:19  49.72  -0.01     229   1138588   卖盘
17    14:59:16  49.73     --     117    581841   买盘
18    14:59:13  49.73   0.01      47    233730   买盘
19    14:59:10  49.72  -0.02      52    258544   卖盘
20    14:59:07  49.74   0.02     674   3352476   买盘
21    14:59:04  49.72     --     133    661276   卖盘
22    14:59:01  49.72     --     180    895854   买盘
23    14:58:58  49.72     --      49    243628   买盘
24    14:58:55  49.72   0.01      51    253572   买盘
25    14:58:52  49.71  -0.01      18     89478   卖盘
26    14:58:49  49.72  -0.03     158    785576   卖盘
27    14:58:46  49.75   0.01      46    228850   买盘
28    14:58:43  49.74     --      43    213882   卖盘
29    14:58:40  49.74   0.04     191    950034   买盘
...        ...    ...    ...     ...       ...  ...
4731  09:31:22  50.18   0.04    1218   6116239   买盘
4732  09:31:19  50.14   0.01      66    330924   买盘
4733  09:31:16  50.13  -0.02     262   1313406   卖盘
4734  09:31:13  50.15  -0.02     586   2938790   卖盘
4735  09:31:10  50.17   0.02     395   1981715  中性盘
4736  09:31:07  50.15  -0.03     705   3535575   卖盘
4737  09:31:04  50.18     --    1130   5670340   卖盘
4738  09:31:01  50.18  -0.01     252   1264536   卖盘
4739  09:30:58  50.19   0.02     266   1335054   买盘
4740  09:30:55  50.17  -0.01     349   1750933   卖盘
4741  09:30:52  50.18   0.04     456   2288208   买盘
4742  09:30:49  50.14  -0.04     173    867422   卖盘
4743  09:30:46  50.18   0.04     549   2754882   买盘
4744  09:30:43  50.14     --     187    937618   卖盘
4745  09:30:40  50.14  -0.04     310   1554340   卖盘
4746  09:30:37  50.18   0.04     112    562016   买盘
4747  09:30:34  50.14  -0.01     162    812268  中性盘
4748  09:30:31  50.15   0.13     225   1128375   买盘
4749  09:30:28  50.02  -0.12     202   1010404   卖盘
4750  09:30:25  50.14  -0.04     275   1378850  中性盘
4751  09:30:22  50.18   0.07     841   4220138   买盘
4752  09:30:19  50.11  -0.04     103    516133  中性盘
4753  09:30:16  50.15   0.01    1700   8525500   买盘
4754  09:30:13  50.14   0.03     152    762128   买盘
4755  09:30:10  50.11   0.01     182    912002   买盘
4756  09:30:07  50.10   0.09     544   2725440   买盘
4757  09:30:04  50.01  -0.01    2014  10072014   卖盘
4758  09:30:01  50.02   0.03    1044   5226339   买盘
4759  09:28:45  49.99     --       0         0   卖盘
4760  09:25:02  49.99  49.99    7370  36843929   买盘

[4761 rows x 6 columns]
             open   high  close    ...          v_ma5     v_ma10     v_ma20
date                               ...                                     
2017-06-26  49.99  50.77  49.72    ...      887897.74  860166.06  857338.21
2017-06-23  49.24  49.90  49.72    ...      858955.61  850806.49  879173.58

[2 rows x 13 columns]

Process finished with exit code 0

2.2 代码2

import tushare as ts
d = ts.get_h_data('600848', '2008-01-01', '2018-01-01')
d['close'].to_json('/Users/hfy/Documents/600848.json',orient='records')
year = [i for i in range(len(d['close']))]
file = open('/Users/hfy/Documents/600848_year.json','w')
file.write(str(year))
file.close()
//使用这段代码需要修改:1. 股票代码;2. 文件路径

把某支股票每日的收盘数据写入到文件中,这里会生成两个文件:

然后把这两个数组粘贴到Echarts对应的表格中,就可以看到一个股价变化表:

ECharts对应的example的右下角可以下载一个对应的HTML,只需要修改数据即可,下载后修改的样例代码line-stack

stock_price

一些其他用法

print('数据来源版本:'+ts.__version__)

#沪深300指数K线数据
print(ts.get_hist_data('hs300'))
#沪深300指数60分钟K线数据
print(ts.get_hist_data('hs300',ktype='60'))

#复权数据
#中通客车的前复权数据
print(ts.get_h_data('000957'))

#中通客车后复权数据
print(ts.get_h_data('000957',autype='hfq'))

#中通客车不复权数据')
print(ts.get_h_data('000957',autype=None))
#行业分类
print('行业分类:\n',ts.get_industry_classified())
#概念分类
print('概念分类:\n',ts.get_concept_classified())
#地域分类
print('地域分类:\n',ts.get_area_classified())
#创业板分类
print('创业板分类:\n',ts.get_gem_classified())
#风险警示板分类
print('风险警示板分类:\n',ts.get_st_classified())
#沪深300成分股及权重
print('沪深300成分股及权重:\n',ts.get_hs300s())

#中通客车10日历史数据
ztkchist = ts.get_hist_data('000957')
print(ztkchist.tail(10))

#中通客车周K线数据
print(ts.get_hist_data('000957',ktype="W"))
#中通客车月K线数据
print(ts.get_hist_data('000957',ktype="M"))
#中通客车5分钟K线
print(ts.get_hist_data('000957',ktype='5'))
#中通客车30分钟K线数据
print(ts.get_hist_data('000957',ktype='30'))
#中通客车60分钟K线数据
print(ts.get_hist_data('000957',ktype='60'))

#中通客车实时报价
ztkcrealtime = ts.get_realtime_quotes('000957')
print(ztkcrealtime[['code','name','price','bid','ask','volume','amount','time']])

#中通客车大单交易,大单为500手
ztkcdd=ts.get_sina_dd('000957',date='2016-08-05',vol=100)
print(ztkcdd)
ztkcdd.to_excel("./中通客车20160805大单交易.xlsx")

#新股
newts = ts.new_stocks()
print(newts)

#沪市融资融券数据
ztkc_margin=ts.sh_margin_details(start='2016-01-01', end='2016-08-05', symbol='601668')
print(ztkc_margin)

#信息地雷
guba = ts.guba_sina(True)
print(guba)
print(guba.ix[1]['content'])

#个股信息地雷
print(ts.get_notices('000957'))

#中通客车历史分笔数据
ztkctick = ts.get_tick_data('000957','2016-08-05')
print(ztkctick.head(100))

#当日所有股票
all = ts.get_today_all()
all.to_excel('./今日股票数据.xlsx')
print(ts.get_today_all())

3.参考资料

  1. tushare官方文档