Python大数据分析——多线程获取沪深股票历史数据

要进行数据分析,得获取数据。对于金融数据,我们有很多获取方式,如雅虎金融,谷歌金融,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数据库,以备后续数据分析处理。

欢迎批评指正。




你可能感兴趣的:(python)