# coding=utf-8
from multiprocessing.dummy import Pool as ThreadPool
import httpConn
import dbConn
from SendEmail import Email
import time
def getCode():
url = 'http://41.push2.eastmoney.com/api/qt/clist/get?pn=1&pz=6000&po=1&np=1&ut=&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:13,m:0+t:80,m:1+t:2,m:1+t:23&fields=f12,f13,f14'
conn = httpConn.HttpConnect()
data = conn.request_get(url)
if data == '':
print('查询code失败')
else:
# 启动100个线程
pool = ThreadPool(5)
# 所有链接
diffItem = []
for i in data['data']['diff']:
diffItem.append(i)
# 请求开始
response = pool.map(getZhuBan, diffItem)
# 关闭线程池
pool.close()
# 等待所有线程完成
pool.join()
dbConn.MY_SQL().save_bankuai_table(sqlList)
def getZhuBan(diff):
codes = str(diff['f13']) + '.' + diff['f12']
try:
url = 'https://push2.eastmoney.com/api/qt/slist/get?forcect=1&spt=3&fields=f12,f14&pi=0&pz=30&po=1&fid=f3&fid0=f4003&invt=2&secid='+codes+'&cb='
conn = httpConn.HttpConnect()
data = conn.request_get(url)
if data is None or data == '':
print('查询banKuai失败' + diff['f12'] + diff['f14'])
errData.append(diff)
elif data['data'] is not None:
code = (diff['f12'])
type = str(diff['f13'])
name = (diff['f14'])
bkCode = data['data']['diff']['0']['f12']
bkName = data['data']['diff']['0']['f14']
getPanKou(code, type, name, bkCode, bkName)
except Exception as e:
print('error1: ' + codes)
errData.append(diff)
def getPanKou(code, type, name, bkCode, bkName):
try:
url = 'https://push2.eastmoney.com/api/qt/stock/get?secid='+type+'.'+code+'&forcect=1&fields=f162,f164,f163,f92,f167,f165,f173,f84,f116,f85,f117&invt=2&cb='
conn = httpConn.HttpConnect()
data = conn.request_get(url)
if data is None or data == '':
print('查询'+code+'失败')
diff={}
diff['f12'] = code
diff['f13'] = type
diff['f14'] = name
errData.append(diff)
elif data['data'] is not None:
zongGuBen = data['data']['f84']
liuTongGu = data['data']['f85']
meiGJZC = data['data']['f92']
zongZhi = data['data']['f116']
liuZhi = data['data']['f117']
shiyinglvD = data['data']['f162']
shiyinglvJ = data['data']['f163']
shiyinglvT = data['data']['f164']
shiXiaoLv = data['data']['f165']
shiJingLv = data['data']['f167']
jingZCSYLv = data['data']['f173']
getHeXinTiCai(code, name, type, bkName, bkCode, shiyinglvD, shiyinglvJ, shiyinglvT, shiJingLv, shiXiaoLv, meiGJZC, jingZCSYLv, zongGuBen, zongZhi, liuTongGu, liuZhi)
except Exception as e:
print('err: ' + code + ', ' + name)
diff = {}
diff['f12'] = code
diff['f13'] = type
diff['f14'] = name
errData.append(diff)
def getHeXinTiCai(code, name, type, bkName, bkCode, shiyinglvD, shiyinglvJ, shiyinglvT, shiJingLv, shiXiaoLv, meiGJZC, jingZCSYLv, zongGuBen, zongZhi, liuTongGu, liuZhi):
try:
if type == '0':
sort = 'SZ'
else:
sort = 'SH'
url = 'http://f10.eastmoney.com/CoreConception/CoreConceptionAjax?code='+sort+code
conn = httpConn.HttpConnect()
data = conn.request_get(url)
hexin = ''
if 'hxtc' in data:
for i in data['hxtc']:
hexin += ('<b>' + i['gjc'] + '</b>')
hexin += (i['ydnr'])
hexin += '<br>'
hexin = hexin.replace('\'', '\\\'')
sql = "REPLACE INTO `t_code`(`id`,`code`, `name`, `type`, `bkName`, `bkCode`, `shiYingLvD`, `shiYingLvJ`, `shiYingLvT`, `shiJingLv`, `shiXiaoLv`, `meiGuJZC`, `jingZCSYLv`, `zongGuBen`, `zongZhi`, `liuTongGu`, `liuZhi`, `heXinTiCai`) VALUES (UUID(), '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s');" % \
(code, name, type, bkName, bkCode, shiyinglvD, shiyinglvJ, shiyinglvT, shiJingLv, shiXiaoLv, meiGJZC,
jingZCSYLv, zongGuBen, zongZhi, liuTongGu, liuZhi, hexin)
sqlList.append(sql)
except Exception as e:
print('err: ' + code + ', ' + name)
diff = {}
diff['f12'] = code
diff['f13'] = type
diff['f14'] = name
errData.append(diff)
try:
# 插入sql集合
sqlList = []
# 运行时出错的code集合
errData = []
# 开始任务
getCode()
count = 100
while len(errData) > 0:
for i in errData:
getZhuBan(i)
time.sleep(5)
count -= 1
if count < 0:
break
print('=== get gegu bankuai success ===')
except Exception as e:
Email.sendErr()