有可用的数据接口了,就要有股票列表资料,搜索网上资料后,原来可以用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()
现在得到列表了,等下就是看看怎样整合了.