Newer
Older
stockTray / EastMoneyPy / venv / main / eastmoney / getCodeInfo.py
bello on 3 Sep 2020 4 KB 爬取核心题材
# 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()