要进行数据分析,得获取数据。对于金融数据,我们有很多获取方式,如雅虎金融,谷歌金融,QuantQuote,EODData,下面列出它们具体的地址:
Yahoo Finance - http://finance.yahoo.com
Google Finance - https://www.google.com/finance
QuantQuote - https://www.quantquote.com
EODData - http://eoddata.com
当然,如果要获取国外金融数据,我们主要从上面这些网站上获取;但如要获取国内股票数据,下面有一个很方便的接口,且是用python写的,所以使用起来很方便:
tushare - http://tushare.org/index.html
下面我使用tushare来获取国内沪深3000多支股票历史数据,并存入本地数据库(使用sqlite3):
代码如下:
import time
import tushare as ts
import sqlite3
import threading
import grouppopulation as group
import threadlocker
cont = sqlite3.connect("mydb.db")
sqlstr1 = 'delete from ' + STOCKHISTDATA
cont.execute(sqlstr1)
cont.commit()
def getStockHistData(column, table, threadnum):
eng = sqlite3.connect("mydb.db")
print('thread ' + threadnum + ' start at: ' + time.asctime(time.localtime(time.time())))
sqlstr = 'drop table if exists ' + table
#print('jhm: ' + sqlstr)
eng.execute(sqlstr)
for name in column:
dfd = ts.get_hist_data(name)
dfd['code'] = name
#time.sleep(0.1)
#locker.incr();
s1.acquire()
dfd.to_sql(table, con=eng,if_exists='append')
eng.commit()
#locker.decr();
s1.release()
eng.execute(mergesql % table)
eng.commit()
eng.execute(sqlstr)
print('thread ' + threadnum + 'ends at: ' + time.asctime( time.localtime(time.time()) ))
代码使用多线程获取3000多支股票历史数据,在我本机上测试,共需5分钟,存入sqlite3数据库,以备后续数据分析处理。
欢迎批评指正。