有可用的数据接口了,就要有股票列表资料,搜索网上资料后,原来可以用python读股票列表资料, 我的广发证据系统【T0002\hq_cache】目录下的szex.tnf和shex.tnf.
代码摘自网上,及修改了.
以下数据库
ticker.sql
CREATE TABLE IF NOT EXISTS `ticker` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `stockid` char(6) CHARACTER SET latin1 NOT NULL, `name` char(20) DEFAULT NULL, `market` enum('sz','sh','hk') CHARACTER SET latin1 DEFAULT NULL, `code` char(12) CHARACTER SET latin1 DEFAULT NULL, `kind` enum('stock','index','option','futures') CHARACTER SET latin1 DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
getstockdata.py
#-*- encoding: utf-8 -*- import struct class TStock: def getListSz(self): """读取列表数据""" f = open('szex.tnf','rb') f.seek(50) datacode = [] ss = f.read(250) #print ss while ss<>'': datacode.append((ss,ss,ss)) ss = f.read(250) f.close() return datacode def getListSh(self): """读取列表数据""" f = open('shex.tnf','rb') f.seek(50) datacode = [] ss = f.read(250) #print ss while ss<>'': datacode.append((ss,ss,ss)) ss = f.read(250) f.close() return datacode
stocklist2db.py
#-*- encoding: utf-8 -*- import sys,re import MySQLdb from getstockdata import TStock reload(sys) sys.setdefaultencoding('gbk') def strip(str): pat = re.compile('\x00*([^\x00].*[^\x00])\x00*') a = pat.search(str) if a: return a.groups() else: return '-' dClass = TStock() dataSz = dClass.getListSz() dataSh = dClass.getListSh() try: conn = MySQLdb.connect (host ="localhost",user="root",passwd="123456789",db="stock") except MySQLdb.Error, e: print str(e) sys.exit(1) try: cursor = conn.cursor() cursor.execute("SET NAMES 'utf8'; ") for code in dataSz: ss=code xaa=ss[0][0:6] xbb=ss[0][24:32] xbb=xbb.decode('cp936').encode('utf8') xcc=ss[0][241:245] #xcc=strip(xcc) isql="INSERT INTO ticker SET stockid = "+ xaa +", name ='"+ xbb +"', market ='sz',code ='"+ xcc+ "'" print isql cursor.execute(isql) for code in dataSh: ss=code xaa=ss[0][0:6] xbb=ss[0][24:32] xbb=xbb.decode('cp936').encode('utf8') xcc=ss[0][241:245] #xcc=strip(xcc) isql="INSERT INTO ticker SET stockid = "+ xaa +", name ='"+ xbb +"', market ='sh',code ='"+ xcc+ "'" print isql cursor.execute(isql) cursor.close() except MySQLdb.Error, e: print str(e) sys.exit(1) conn.commit() conn.close()
现在得到列表了,等下就是看看怎样整合了.