Example #1
0
def get_TobefreeTrade_qq(code=None, start=today, end='20191231'):
    """大小非解禁时间表
    ------------------
    code : 查询股票的代码,code is None,查询该时间段所有的股票解禁时间表
    start:开始查询的时间,20170101
    end  :截止查询的时间,20170630    
    """
    if code is None:
        code = ''

    url = 'http://stock.finance.qq.com//sstock/list/view/dxf.php?c={0}&b={1}&e={2}'.format(
        code, start, end)

    r = requests.get(url, headers=hds())
    text = r.text.split('=[[')[1].replace("]];", '')
    text = text.replace('],[', '\n')
    df = pd.read_csv(StringIO(text), header=None)

    df = df.drop(6, axis=1)
    df.columns = [
        'code', 'name', 'Free.date', 'Free.S(10K)', 'Free.MV(10K)',
        'Curr.S(10K)', 'Source', 'F.S/Curr.S.%'
    ]
    df['code'] = df['code'].map(lambda x: str(x).zfill(6))
    df = df.applymap(lambda x: wt._tofl(x))
    return df
Example #2
0
def get_reportlistjson_qq(code):

    url = 'http://message.finance.qq.com/report/get_hq_report_jgyc.php?n=5000&zqdm={0}&seq=0&format=json&r=0.38097072788514197'.format(
        code)
    r = requests.get(url)
    text = r.text.split('=')[1]
    data = json.loads(text)
    df = pd.DataFrame(data['data']['report'])
    df = df.applymap(lambda x: wt._tofl(x))
    return df
Example #3
0
def get_forcast_qq(code=None, year=2017, qu=3, mtype=0):
    """获取企业的业绩预告信息
    code:股票代码6个字符
    report:报告期,like 20170630
    mtype:  类型,0-全部的业绩预告,1-预增的业绩预告,2-预减的业绩预告,
                 3-预盈的业绩预告,4-预亏的业绩预告,5-大幅上升的业绩预告,
                 6-大幅下降的业绩预告,7-扭亏的业绩预告,8-减亏的业绩预告,
                 9-无大变的业绩预告,10-不确定的业绩预告
    """
    report = quarter[qu] % year
    if code is None:
        url = 'http://message.finance.qq.com/stock/jbnb/get_yjyg.php?gpdm=&type={1}&bgq={0}&p=1&lmt=50&sort_name=ggrq&order=desc'.format(
            report, mtype)
    elif isinstance(code, str):
        url = 'http://message.finance.qq.com/stock/jbnb/get_yjyg.php?gpdm={0}&type={2}&bgq={1}&p=1&lmt=50&sort_name=ggrq&order=desc'.format(
            code, report, mtype)

    r = requests.get(url, headers=hds())
    #print(url)
    text = r.text.split("yjyg=")[1]
    data = json.loads(text)
    df = pd.DataFrame(data['data']['data'])
    tpage = data['data']['totalPages']

    if tpage > 1:
        tpage = tpage + 1
        for i in range(2, tpage):
            if code is None:
                url = 'http://message.finance.qq.com/stock/jbnb/get_yjyg.php?gpdm=&type={1}&bgq={0}&p={2}&lmt=50&sort_name=ggrq&order=desc'.format(
                    report, mtype, i)
            elif isinstance(code, str):
                url = 'http://message.finance.qq.com/stock/jbnb/get_yjyg.php?gpdm={0}&type={3}&bgq={1}&p={2}&lmt=50&sort_name=ggrq&order=desc'.format(
                    code, report, i, mtype)

            r = requests.get(url, headers=hds())
            text = r.text.split("yjyg=")[1]
            data = json.loads(text)
            df = df.append(pd.DataFrame(data['data']['data']))

    try:
        df.columns = [
            'report.D', 'publish.D', 'code', 'name', 'eps_last', 'type',
            'describe'
        ]
        df['code'] = df['code'].map(lambda x: str(x).zfill(6))
    except:
        pass

    df = df.applymap(lambda x: wt._tofl(x))
    return df
Example #4
0
def get_drogan_tiger_qq(code=None, start=None, end=None):
    """查看龙虎榜的信息
    ------------------------
    code : 查询股票的代码
    start:开始查询的时间,20170101
    end  :截止查询的时间,20170630
    """
    if (code is None) and (start is None) and (end is None):
        url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_lhb_js?t=0&c=&b=&e=&p=1&l=&ol=6&o=desc'
    if (start is not None) and (end is not None):
        if code is None:
            code = ''
            url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_lhb_js?t=2&c={0}&b={1}&e={2}&p=1&l=&ol=6&o=desc'.format(
                code, start, end)
        else:
            url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_lhb_js?t=1&c={0}&b={1}&e={2}&p=1&l=&ol=6&o=desc'.format(
                code, start, end)

    #print(url)
    r = requests.get(url, headers=hds())
    text = r.text
    df = _text2pd(text)

    tps = int(r.text.split(",_pages:")[1].split(",_num:")[0])
    tpss = tps + 1
    if tps > 1:
        for i in range(2, tpss):
            if (code is None) and (start is None) and (end is None):
                url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_lhb_js?t=0&c=&b=&e=&p={0}&l=&ol=6&o=desc'.format(
                    i)
            if (start is not None) and (end is not None):
                if code is None:
                    code = ''
                    url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_lhb_js?t=2&c={0}&b={1}&e={2}&p={3}&l=&ol=6&o=desc'.format(
                        code, start, end, i)
                else:
                    url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_lhb_js?t=1&c={0}&b={1}&e={2}&p={3}&l=&ol=6&o=desc'.format(
                        code, start, end, i)
            r = requests.get(url, headers=hds())
            text = r.text
            df = df.append(_text2pd(text))

    df = df.drop(4, axis=1)
    df.columns = ['date', 'code', 'name', 'descrise', 'price', 'chg%']
    df['code'] = df['code'].map(lambda x: str(x).zfill(6))
    df = df.set_index('date')
    df = df.sort_index()
    df = df.applymap(lambda x: wt._tofl(x))
    return df
Example #5
0
def get_cashfl_industry_qq(mtype=1):
    """获取交易日当天的板块资金流动情况
    -------------------------------
    mtype:整数
      1-按行业主力资金流动情况
      3-按概念主力资金流动情况
      2-按个股的增仓资金流动情况
      4-价跌主力增仓排名
      5-价涨主力减仓排名
      6-主力资金放量股
      ----------------------
      url_cashfl_industry={1'http://stock.gtimg.cn/data/view/flow.php?t=2',
                           2:'http://stock.gtimg.cn/data/view/flow.php?t=4',
                           3:'http://stock.gtimg.cn/data/view/flow.php?t=5',
                           4:'http://stock.gtimg.cn/data/view/flow.php?t=7&d=1',
                           5:'http://stock.gtimg.cn/data/view/flow.php?t=8&d=1',
                           6:'http://stock.gtimg.cn/data/view/flow.php?t=9&d=1'}
    """
    url = wt.url_cashfl_industry[mtype]

    r = requests.get(url, headers=hds())
    text = r.content.decode('gbk')
    if mtype in [1, 3]:
        text = text.split("boardzhuli='")[1]
        text = text.split("';var v_s_boardfunds='")
        text = '\n'.join(text)
        text = text.replace("'", '')
    if mtype == 2:
        text = text.split("stock_fund_netin_10='")[1]
        text = text.split("; var stock_fund_netout_10='")
        text = '\n'.join(text)
        text = text.replace("'", '')

    if mtype == 4:
        text = text.split("PrDwn='")[1].replace("';", '')
    if mtype == 5:
        text = text.split("v_s_PrUp='")[1].replace("';", '')
    if mtype == 6:
        text = text.split("v_s_zlfl_rank='")[1].replace("';", '')

    text = text.replace("~", ',').replace("^", '\n').replace(";", '')
    df = pd.read_csv(StringIO(text), header=None)
    df = df.drop_duplicates()
    #df=df.replace('--',np.nan)
    df = df.applymap(lambda x: wt._tofl(x))
    return df
Example #6
0
def get_finance_index_qq(code=None, year=2017, qu=2):
    """获取年报季报的基本指标数据,按年获取
    """
    rpday = quarter[qu] % year
    if code is None:
        url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_yjgg_js?c=&d={0}&b=&p=1&l=&o='.format(
            rpday)
    else:
        url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_yjgg_js?c={0}&d={1}&b=&p=2&l=&o='.format(
            code, rpday)

    r = requests.get(url, headers=hds())
    text = r.text.split("_datas:[[")[1].replace("]],_o:0};\n", "")
    text = text.replace("],[", '\n')
    df = pd.read_csv(StringIO(text), header=None)

    tps = int(r.text.split(",_pages:")[1].split(",_num:")[0])
    tpss = tps + 1
    if tps > 1:
        for i in range(2, tpss):
            if code is None:
                url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_yjgg_js?c=&d={0}&b=&p={1}&l=&o='.format(
                    rpday, i)
            else:
                url = 'http://stock.finance.qq.com/cgi-bin/sstock/q_yjgg_js?c={0}&d={1}&b=&p={2}&l=&o='.format(
                    code, rpday, i)

            r = requests.get(url, headers=hds())
            text = r.text.split("_datas:[[")[1].replace("]],_o:0};\n", "")
            text = text.replace("],[", '\n')
            df = df.append(pd.read_csv(StringIO(text), header=None))

    df = df.drop([0, 11], axis=1)
    df.columns = [
        'code', 'name', 'report.d', 'publish.d', 'eps', 'nav.ps', 'cf.ps',
        'roe', 'cost.pro.rate', 'Rev.p.yoy%', 'dispatch'
    ]

    df = df.replace('--', np.nan)
    df = df.applymap(lambda x: wt._tofl(x))
    df['code'] = df['code'].map(lambda x: str(x).zfill(6))
    return df
Example #7
0
def get_income_composition_qq(code, mtype='cp'):
    """
    获得公司收入构成情况表
    ----------------
    mtype: 查询的分类数据
         cp:按产品对收入进行归类
         hy:按行业对收入进行归类
         dy:按地域对收入进行归类
    return :
    ---------------------
         DataFrame()
    """
    url = 'http://stock.finance.qq.com/corp1/income.php?zqdm={0}'.format(code)
    r = requests.get(url, headers=hds())
    text = r.text
    #print(text)
    soup = BeautifulSoup(text, 'lxml')
    table = soup.find_all('table')
    #print(len(table))

    if mtype == 'cp':
        df = pd.read_html(str(table[1]), header=None, skiprows=5)[0]
    elif mtype == 'hy':
        df = pd.read_html(str(table[4]), header=None, skiprows=5)[0]
    elif mtype == 'dy':
        df = pd.read_html(str(table[7]), header=None, skiprows=5)[0]

    df = df.drop([0], axis=0)
    name = [
        'name', 'Rev(10k)', 'Rev.Rate', 'Cost', 'Rev.Profit', 'Rev.Pro.Rate',
        'Margin.Rate'
    ]

    df = df.iloc[:, :7]
    df.columns = name
    df = df.applymap(lambda x: wt._tofl(x))
    df = df.replace('', np.nan)
    df = df.dropna(how='all', axis=1)
    df['code'] = code
    #print(df)
    return df
Example #8
0
def get_inst_hypeizhi_qq(mtype='ins', date='2017-06-30'):
    """mtype='inc' or 'dec';
    """
    url = 'http://web.ifzq.gtimg.cn/fund/hyconf/hyconf/hypm?type={0}&colum=bdsz&order=desc&rd={1}'.format(
        mtype, date)

    r = requests.get(url, headers=hds())
    print(url)
    data = json.loads(r.text)
    df = pd.DataFrame(data["data"]["data"])
    df.rename(columns={
        'bdsz': 'Chang',
        'ccjj': 'inst_num',
        'ccsz': 'hold_MarketV',
        'hymc': "industry_name",
        'rd': 'date'
    },
              inplace=True)
    df = df[['industry_name', 'inst_num', 'Chang', 'hold_MarketV', 'date']]
    df = df.applymap(lambda x: wt._tofl(x))
    df = df.sort_values(by='Chang')
    return df
Example #9
0
def get_bigtradeinfo_qq(code=None, start='20010120', end=today):
    """大宗交易
    """

    if code is None:
        code = ''

    url = 'http://stock.finance.qq.com/sstock/list/view/dzjy.php?b={1}&e={2}&p=1&o=0&c={0}'.format(
        code, start, end)

    r = requests.get(url, headers=hds())
    text = r.text
    #print(text)
    df = _text2pd(text)

    tps = int(r.text.split(",_pages:")[1].split(",_num:")[0])
    tpss = tps + 1
    if tps > 1:
        for i in range(2, tpss):
            if code is None:
                code = ''

            url = 'http://stock.finance.qq.com/sstock/list/view/dzjy.php?b={1}&e={2}&p={3}&o=0&c={0}'.format(
                code, start, end, i)
            r = requests.get(url, headers=hds())
            text = r.text
            df = df.append(_text2pd(text))

    df.columns = [
        'date', 'code', 'name', 'price', 'amount(10K)', 'volume(10K)',
        'buy_inst', 'sell_inst'
    ]
    df['code'] = df['code'].map(lambda x: str(x).zfill(6))
    df = df.set_index('date')
    df = df.sort_index()
    df = df.applymap(lambda x: wt._tofl(x))
    return df
Example #10
0
def get_cwfx_qq(code, mtype='ylnl'):
    """
    从腾讯财务获得相应的 指标
    ---------------------------------------
    code:上海、深圳交易所的股票代码
    mtype: mgzb--每股指标
           ylnl--盈利能力
           yynl--营运能力
           cznl--成长能力
           djcw--单季财务
           czzb--偿债及资本结构
    --------------------------------------------
    return:
         DataFrame:
            ylnl: 
                  cbfylrl:成本费用利润率(%)
                  fjcxsybl:非经常性损益比率(%)
                  jlrkc:扣除非经常性损益后的净利润(元)
                  jzcsyljq:净资产收益率(加权)(%)
                  sxfyl:三项费用率(%)
                  xsjll:销售净利率(%)
                  xsmll:销售毛利率(%)
                  xsqlr:息税前利润(%)
                  xsqlrl:息税前利润率(%) 
                  yylrl:营业利润率(%)
                  zzclrl:总资产利润率(%)
                  ylnlname=['Cost.Profit.R','Net.oper.R','Profit_d','ROE','Three.Cost.R','Profit.R','Gross.Margin.R','Profit_bTax','Profit_rate_bTax','O.Profit.Rate','ROA']

           mgzb:  
                  jbmgsy:基本每股收益(元)
                  jqmgsy: 每股收益(加权)(元)
                  jqmgsykc: 加权每股收益(扣除)(元)
                  mgjzc: 每股净资产(元)
                  mgxjll: 每股现金流量(元)
                  mgxssr: 每股销售收入(元)
                  tbmgsy:摊薄每股收益(元)
                  tbmgsykc: 摊薄每股收益(扣除)(元)	
                  tzhmgjzc: 调整后每股净资产(元)
                  xsmgsy:稀释每股收益(元)
                  mgzbname=['EPS','W.EPS','W.EPS.D','Net.A.PS','CF_PS','Rev.PS','EPS.Dilute','EPS.Dilute.D','Net.A.PS.Adj','D.EPS']

           yynl:
                  chzcgcl: 存货资产构成率(%)
                  chzzl: 存货周转率(%)
                  chzzts: 存货周转天数(天)
                  gdqyzzl: 股东权益周转率(%)
                  gdzczzl: 固定资产周转率(%)
                  ldzczzl:流动资产周转率(%)
                  ldzczzts: 流动资产周转天数(天)	
                  yszkzzl: 应收账款周转率(%)
                  yszkzzts: 应收账款周转天数(天)	
                  zzczzl: 总资产周转率(%)
                  zzczzts:总资产周转天数(天)
                  yynlname=['Invt_Asset_rate','Invt_turnover_rate','Invt_turnover_day','Shareholder_turnover_rate','Fixed_turnover_rate','Curr_Asset_turnover_rate','Curr_Asset_turnover_day','Receivable_turnover_ratio','Receivable_turnover_day','Asset_turnover_ratio,'Asset_turnover_day']

           cznl:
                  jlr: 净利润增长率(%)
                  lrze: 利润总额增长率(%)
                  mgsy: 每股收益增长率(%)
                  mgxj: 每股现金流增长率(%)
                  xsqlr: 息税前利润增长率(%)
                  yylr: 营业利润增长率(%)
                  zysr: 主营收入增长率(%)
                  zzc:总资产增长率(%)	
                  cznlname=['Net.profit_yoy','T.profit_yoy','Rev.PS_yoy','CF_PS_yoy',Profit.bTax_yoy','Rev.Profit_yoy','Rev_yoy',Asset_yoy']

           djcw:
                  jzcsyl: 净资产收益率(%)
                  jzcsylkc: 净资产收益率(扣除)(%)	
                  mgsykctb: 每股收益(扣除后摊薄)(元)	
                  mgsytb: 每股收益(摊薄)(元)
                  mgxssr: 每股销售收入(元)
                  sqzzcsyl: 税前总资产收益率(%)
                  xsjll: 销售净利率(%)
                  xsmll: 销售毛利率(%)
                  xsqlr: 息税前利润(元)
                  xsqlrl:息税前利润率(%) 
                  zzcsyl:总资产收益率(%)
                  djcwname=['ROE','ROE.D','EPS.DD','EPS.D','Rev.PS','ROA.bTax',Rev.NetProfit.R','Rev.Gr.Profit.R','Profit.bTax','Profit.bTax.R','ROA']

           czzb:
                  cqbl: 产权比率(%)
                  czyzb: 长期债务与营运资金比率(%)	
                  gdzcbl: 固定资产比率(%)
                  gzjzl: 固定资产净值率(%
                  ldbl: 流动比率(%)
                  qsjzbl: 清算价值比率(%)
                  sdbl: 速动比率(%)
                  xjbl:现金比率(%)
                  zbgbbl: 资本固定化比率(%)
                  zbhbl: 资本化比率(%)
                  zcfzl: 资产负债率(%)
                  zzc:总资产(元)
                  czzbname=['Debt_Equit_R','L.Debt_Work.Capital_R','Fix.Asset.R','Net.Asset.R','Curr_Rate','Liquidation_ratio','Quick_Rate','Cash_Rate','Capital_fixed_ratio','Capitalization_R','Assets_Debt_R','Asset']

    """
    if code[0] in ['0', '2', '3']:
        code = 'sz' + code
    elif code[0] in ['6', '9']:
        code = 'sh' + code
    else:
        print("Input the right code, like 600000")

    url = 'http://comdata.finance.gtimg.cn/data/{1}/{0}'.format(code, mtype)

    r = requests.get(url, headers=hds())
    text = r.text
    text = text.split('=')[1].replace("]}};", "]}}")

    data = json.loads(text)
    yearlist = data['data']['nflb']

    df = pd.DataFrame()

    for y in yearlist:
        url = 'http://comdata.finance.gtimg.cn/data/{1}/{0}/{2}'.format(
            code, mtype, y)
        r = requests.get(url, headers=hds())
        #print(url)
        text = r.text
        text = text.split('=')[1].replace("]}};", "]}}")

        data = json.loads(text)
        dd = pd.DataFrame(data['data'][mtype])
        df = df.append(dd)

    df = df.set_index('bgrq')
    df = df.sort_index()
    df = df.replace('--', np.nan)
    df = df.applymap(lambda x: wt._tofl(x))
    #df=df.applymap(lambda x:np.where(x=='--',np.nan,float(x)))

    df.columns = wt.named[mtype]
    df = df.applymap(lambda x: wt._tofl(x))
    return df