class DaPanHangQing(object): def __init__(self): super(DaPanHangQing, self).__init__() def __call__(self, conns): self.base = Base() self.finacial_data = conns['financial_data'] #清空表 # self.finacial_data.dopost('TRUNCATE TABLE dapan_hangqing_date') # self.finacial_data.dopost('TRUNCATE TABLE dapan_code_name') # 实时行情 hangqing = ts.get_index() today = self.base.gettoday() hangqing['date'] = today.replace('/', '-') #大盘指数每日行情数据 self.base.batchwri(hangqing, 'dapan_hangqing_date', self.finacial_data) #大盘代码-名字对照表 self.base.batchwri(hangqing[['code', 'name']], 'dapan_code_name', self.finacial_data) #大盘代码-名字对照表去重 duizhao = self.finacial_data.getdata('dapan_code_name') # print(duizhao.size) duizhao_qc = duizhao.drop_duplicates().sort_values( by='code').reset_index(drop=True) # print(df) self.finacial_data.dopost('TRUNCATE TABLE dapan_code_name') self.base.batchwri(duizhao_qc, 'dapan_code_name', self.finacial_data)
class Shibor(object): def __init__(self): super(Shibor, self).__init__() def __call__(self, conns): self.base = Base() self.financial_data = conns['financial_data'] year = self.base.gettoday()[:4] #Shibor拆放利率 shibor_data = ts.shibor_data(year) print(shibor_data) self.base.batchwri(shibor_data, 'shibor_data', self.financial_data) #银行报价数据 shibor_quote_date = ts.shibor_quote_data(year) self.base.batchwri(shibor_quote_date, 'shibor_quote_data', self.financial_data) #Shibor均值数据 shibor_ma_data = ts.shibor_ma_data(year) self.base.batchwri(shibor_ma_data, 'shibor_ma_data', self.financial_data) #贷款基础利率(LPR) lpr_data = ts.lpr_data(year) self.base.batchwri(lpr_data, 'lpr_data', self.financial_data) #LPR均值数据 lpr_ma_data = ts.lpr_ma_data(year) self.base.batchwri(lpr_ma_data, 'lpr_ma_data', self.financial_data)
class GeGuHangQing(object): def __init__(self): super(GeGuHangQing,self).__init__() self.close_res = [] def __call__(self, conns, retry_num=3): ''' 抓取股票每日行情数据 :param conns: 数据库连接 :param retry_num: 重新获取数据的次数 :return: 数据存储在数据库 ''' global hangqing self.base = Base() self.finacial_data = conns['financial_data'] # self.finacial_data.dopost('TRUNCATE TABLE stock_hangqing_date') # self.finacial_data.dopost('TRUNCATE TABLE stock_code_name') #在股市收盘后,获取股票当日行情 #出现"urllib.error.HTTPError: HTTP Error 456"的问题 for i in range(retry_num+1): try: hangqing = ts.get_today_all() break except Exception as e: logger.warning('Retry get today stock data , the [%d] times, err %s' % (i, e.message)) if i == retry_num: logger.warning(traceback.format_exc()) raise e time.sleep(300) today = self.base.gettoday() hangqing['date'] = today.replace('/','-') #股市收盘后,trade现价就是股票的收盘价。 hangqing.rename(columns={'trade': 'close'}, inplace=True) #去重 hangqing_qc = hangqing.drop_duplicates().sort_values(by='code').reset_index(drop=True) # print(hangqing_qc) self.base.batchwri(hangqing_qc, 'stock_hangqing_date',self.finacial_data) self.base.batchwri(hangqing_qc[['code','name']], 'stock_code_name', self.finacial_data) #股票代码-名称对照表去重 duizhao = self.finacial_data.getdata('stock_code_name') print(duizhao.size) duizhao_qc = duizhao.drop_duplicates().sort_values(by='code').reset_index(drop=True) # print(df) self.finacial_data.dopost('TRUNCATE TABLE stock_code_name') self.base.batchwri(duizhao_qc, 'stock_code_name', self.finacial_data)
class LonghuBang(object): def __init__(self): super(LonghuBang,self).__init__() def __call__(self,conns): self.base=Base() self.financial_data=conns['financial_data'] date=self.base.gettoday().replace('/','-') # print(date) # '''每日龙虎榜列表''' # for day in self.base.datelist('20180702','20180705'): # day=day.replace('/','-') # top_list=ts.top_list(day) # self.base.batchwri(top_list,'top_list',self.financial_data) # ''' # 名称:个股上榜统计 # 参数说明: # days:统计周期5、10、30和60日,默认为5日 # retry_count:当网络异常后重试次数,默认为3 # pause:重试时停顿秒数,默认为0''' # cap_tops=ts.cap_tops() # self.base.batchwri(cap_tops,'cap_tops',self.financial_data) # ''' # 名称:营业部上榜统计 # 参数说明: # days:统计周期5、10、30和60日,默认为5日 # retry_count:当网络异常后重试次数,默认为3 # pause:重试时停顿秒数,默认为0''' # broker_tops=ts.broker_tops() # self.base.batchwri(broker_tops,'broker_tops',self.financial_data) # ''' # 名称:机构席位追踪 # 参数说明: # days:统计周期5、10、30和60日,默认为5日 # retry_count:当网络异常后重试次数,默认为3 # pause:重试时停顿秒数,默认为0 # ''' # inst_tops=ts.inst_tops() # self.base.batchwri(inst_tops,'inst_tops',self.financial_data) '''机构成交明细''' inst_detail=ts.inst_detail() self.base.batchwri(inst_detail,'inst_detail',self.financial_data)