Commit bb5adbee authored by sanlu's avatar sanlu

爬取数据在张楷生成product_all后进入页面的程序以及开发测试完毕。

parent 4178386f
...@@ -154,7 +154,7 @@ class LSTMNER: ...@@ -154,7 +154,7 @@ class LSTMNER:
return param_dict return param_dict
if __name__ == '__main__': if __name__ == '__main__':
ner = LSTMNER('1612') ner = LSTMNER('0101')
while 1: while 1:
a = input('请输入产品名称:') a = input('请输入产品名称:')
#print(ner.class_dict) #print(ner.class_dict)
......
...@@ -33,7 +33,6 @@ def param_extract_function(data_table,channel): ...@@ -33,7 +33,6 @@ def param_extract_function(data_table,channel):
#读取数据 #读取数据
#data_table = pd.read_excel('ZH_LXWL_data_2019-12-07.xlsx', converters={'SKU':str,'指数子类编码':str,'指数品牌编码':str}) #data_table = pd.read_excel('ZH_LXWL_data_2019-12-07.xlsx', converters={'SKU':str,'指数子类编码':str,'指数品牌编码':str})
#channel = 'LXWL' #channel = 'LXWL'
f_crawl = open('crawl_categorycode.txt', 'r', encoding='utf-8') f_crawl = open('crawl_categorycode.txt', 'r', encoding='utf-8')
crawl_category_list = [] crawl_category_list = []
for line in f_crawl: for line in f_crawl:
...@@ -44,8 +43,8 @@ def param_extract_function(data_table,channel): ...@@ -44,8 +43,8 @@ def param_extract_function(data_table,channel):
now_time = time.strftime("%Y-%m-%d", time.localtime()) now_time = time.strftime("%Y-%m-%d", time.localtime())
sql_ZIdatabase = sql_find('ZI_DataBase', False) sql_ZIdatabase = sql_find('ZI_DataBase', False)
product_table = pd.DataFrame(data_table, columns=['SKU', '指数品牌','指数品牌编码','产品名称','指数子类','指数子类编码','产品价格','url','品牌']) product_table = pd.DataFrame(data_table, columns=['SKU', '指数品牌','指数品牌编码','产品名称','指数子类','指数子类编码','产品价格','url','品牌','newname'])
product_table.columns = ['productId', 'brandName','brandCode','producrName','categoryCodeName','categoryCode','price','url','original_brandName'] product_table.columns = ['productId', 'brandName','brandCode','producrName','categoryCodeName','categoryCode','price','url','original_brandName','newname']
product_len = len(product_table['productId']) product_len = len(product_table['productId'])
product_table['batch'] = [now_time for i in range(product_len)] product_table['batch'] = [now_time for i in range(product_len)]
product_table['state'] = ['0' for i in range(product_len)] product_table['state'] = ['0' for i in range(product_len)]
...@@ -88,6 +87,7 @@ def param_extract_function(data_table,channel): ...@@ -88,6 +87,7 @@ def param_extract_function(data_table,channel):
'subcategorycode':[] 'subcategorycode':[]
} }
m = 0 m = 0
now_time = f'{now_time}1'
for categorycode in category_list: for categorycode in category_list:
sql_ZIdatabase.cursor.execute(f"select SubTitle from VW_Relation_Property where SubCategoryCode='{categorycode}' and (Isimportant = '1' or Ispeijian = '1')") sql_ZIdatabase.cursor.execute(f"select SubTitle from VW_Relation_Property where SubCategoryCode='{categorycode}' and (Isimportant = '1' or Ispeijian = '1')")
param_standard_lyst = [x[0] for x in sql_ZIdatabase.cursor.fetchall()] param_standard_lyst = [x[0] for x in sql_ZIdatabase.cursor.fetchall()]
...@@ -279,6 +279,7 @@ def param_extract_function(data_table,channel): ...@@ -279,6 +279,7 @@ def param_extract_function(data_table,channel):
channel_sql = sql_find(database=f'ZH_{channel}',localhost=False) channel_sql = sql_find(database=f'ZH_{channel}',localhost=False)
for sku in update_sku_list: for sku in update_sku_list:
channel_sql.cursor.execute(f"update product_all set state='9' where sku='{sku}' and state='8'") channel_sql.cursor.execute(f"update product_all set state='9' where sku='{sku}' and state='8'")
print('结束!')
return update_table_df return update_table_df
def return_error(table): def return_error(table):
...@@ -583,10 +584,435 @@ class data_fetch(): ...@@ -583,10 +584,435 @@ class data_fetch():
data_table.to_excel(f'data/{StyleTime}_step3_needs_check/{self.source}_data_category_data_{StyleTime}.xlsx',index=False)#有子类对应需要确认的表,张力才下这个。 data_table.to_excel(f'data/{StyleTime}_step3_needs_check/{self.source}_data_category_data_{StyleTime}.xlsx',index=False)#有子类对应需要确认的表,张力才下这个。
return_error(no_category_table) return_error(no_category_table)
sql_zi_zh = sql_find('zi_zh', False) sql_zi_zh = sql_find('zi_zh', False)
sql_zi_zh.cursor(f"insert into filestep(period,step,initfilename,filepath) values('{StyleTime}','7','{self.source}_data_category_data_{StyleTime}.xlsx','/root/program/newProductCheck/online_progrom/code/data/{StyleTime}_step3_needs_check')")#存入数据库,页面获取下载。 sql_zi_zh.cursor(f"insert into filestep(period,step,initfilename,filepath) values('{StyleTime}','3','{self.source}_data_category_data_{StyleTime}.xlsx','/root/program/newProductCheck/online_progrom/code/data/{StyleTime}_step3_needs_check')")#存入数据库,页面获取下载。
return data_table return data_table
class myThread_crawl(threading.Thread):
def __init__(self, channel):
threading.Thread.__init__(self)
self.channel = channel
self.data_get = crawl_data_fetch(channel = self.channel)
def run(self):
print ("开始线程:" + self.channel)
crawl_table = self.data_get.run()
if isinstance(crawl_table,bool):
pass
else:
if self.channel in ['JD','SN','GM']:
param_extract_function_crawl(crawl_table, self.channel)
else:
param_extract_function_crawl(crawl_table, 'LXWL')
print("退出线程:" + self.channel)
def param_extract_function_crawl(data_table,channel):
f_crawl = open('crawl_categorycode.txt', 'r', encoding='utf-8')
crawl_category_list = []
for line in f_crawl:
line = line.strip('\n')
crawl_category_list.append(line)
f_crawl.close()
now_time = time.strftime("%Y-%m-%d", time.localtime())
sql_ZIdatabase = sql_find('ZI_DataBase', False)
product_table = pd.DataFrame(data_table, columns=['SKU', '指数品牌','指数品牌编码','产品名称','指数子类','指数子类编码','产品价格','url','品牌','来源'])
product_table.columns = ['productId', 'brandName','brandCode','producrName','categoryCodeName','categoryCode','price','url','original_brandName','source']
product_len = len(product_table['productId'])
product_table['batch'] = [now_time for i in range(product_len)]
product_table['state'] = ['0' for i in range(product_len)]
if os.path.isfile(f'{channel}_参数对应表_{now_time}.xlsx'):
merge_data = pd.read_excel(f'{channel}_参数对应表_{now_time}.xlsx', converters={'ZI_SubCategoryCode':str})
else:
sql_ZIdatabase.cursor.execute(f"select * from Product_Relation_Attribute_SubTitle where Source = '{channel}'")
match_data = sql_ZIdatabase.cursor.fetchall()
match_data = pd.DataFrame(match_data,columns=[tuple[0] for tuple in sql_ZIdatabase.cursor.description])
sql_ZIdatabase.cursor.execute('select * from vw_relation_property')
param_data_table = sql_ZIdatabase.cursor.fetchall()
param_data_table = pd.DataFrame(param_data_table,columns=[tuple[0] for tuple in sql_ZIdatabase.cursor.description])
merge_data = pd.merge(param_data_table,match_data[['ZI_SubTitle','Other_SubTitle','ZI_SubCategoryCode']],left_on=['SubCategoryCode','SubTitle'], right_on=['ZI_SubCategoryCode','ZI_SubTitle'])
merge_data = merge_data.drop_duplicates().reset_index()
merge_data = merge_data[(merge_data['ZI_SubTitle'].isnull() == False) | (merge_data['ISimportant'] == 1) | (merge_data['ispeijian'] == 1)]
merge_data.to_excel(f'{channel}_参数对应表_{now_time}.xlsx')
category_list = set(data_table['指数子类编码'].tolist())
try:
category_list.remove('没有匹配的指数子类编码')
except:
pass
update_table = {
'batch':[],
'source':[],
'productId':[],
'productName':[],
'param':[],
'paramAttributeImportant':[],
'paramAttributeMatch':[],
'paramAttributeStandard':[],
'value':[],
'paramSource':[],
'state':[],
'subcategorycode':[]
}
m = 0
now_time = f'{now_time}1'
for categorycode in category_list:
sql_ZIdatabase.cursor.execute(f"select SubTitle from VW_Relation_Property where SubCategoryCode='{categorycode}' and (Isimportant = '1' or Ispeijian = '1')")
param_standard_lyst = [x[0] for x in sql_ZIdatabase.cursor.fetchall()]
param_standard_dict = {}
for param_standard in param_standard_lyst:
param_standard_dict[param_standard] = []
sql_ZIdatabase.cursor.execute(f"select SubTitle,Isimportant,Isbiaozhunzhi,ispeijian from VW_Relation_Property where SubCategoryCode='{categorycode}' and (Isimportant = '1' or Ispeijian = '1')")
param_state_data = sql_ZIdatabase.cursor.fetchall()
param_state_dict = {}
for param in param_state_data:
param_state_dict[param[0]] = []
param_state_dict[param[0]].append(str(param[1]))
param_state_dict[param[0]].append(str(param[2]))
param_state_dict[param[0]].append(str(param[3]))
param_table = merge_data[(merge_data['ZI_SubCategoryCode'] == categorycode) & ((merge_data['ISimportant'] == 1) | (merge_data['ispeijian'] == 1))]
param_dict = {}
ZI_subtitle_list = []
for other_subtitle,ZI_subtitle in zip(param_table['Other_SubTitle'],param_table['ZI_SubTitle']):
param_dict[other_subtitle] = ZI_subtitle #非标转标词典
ZI_subtitle_list.append(ZI_subtitle)
data_categorycode = data_table[data_table['指数子类编码'] == categorycode]
crawler = CRAWLER(categorycode)
try:
model = LSTMNER(categorycode)
for SKU,name,params,producttype,product_channel in zip(data_categorycode['SKU'],data_categorycode['产品名称'],data_categorycode['参数项'],data_categorycode['产品型号'],data_categorycode['来源']):
m += 1
print(m,end='\r')
product_param_dict = {}#原始参数项对应
try:
params = eval(params)
except TypeError:
pass
for param_key in params.keys():
if '\t' in param_key or ' ' in param_key:
params[param_key.replace('\t','').replace(' ','')] = params.pop(param_key) #去除参数项的特殊符号
for param_key_2 in params.keys():
if param_key_2 in param_dict.keys():
product_param_dict[param_dict[param_key_2]] = params[param_key_2]
elif param_key_2 in ZI_subtitle_list:
product_param_dict[param_key_2] = params[param_key_2]
else:
pass
if '产品型号' not in product_param_dict.keys():
product_param_dict['产品型号'] = producttype
name_param_dict = model.param_extract(name)#名称提取参数项
if categorycode in crawl_category_list:
try:
crawl_param_dict = crawler.crawl_zol(producttype)
except TypeError:
crawl_param_dict = {}
else:
crawl_param_dict = {}
for param_key_name in name_param_dict.keys():
update_table['batch'].append(now_time)#
update_table['source'].append(product_channel)#
update_table['productId'].append(SKU)#
update_table['productName'].append(f'{name};')#
update_table['param'].append(param_key_name)##
try:
update_table['paramAttributeImportant'].append(param_state_dict[param_key_name][0])##
update_table['paramAttributeMatch'].append(param_state_dict[param_key_name][2])##
update_table['paramAttributeStandard'].append(param_state_dict[param_key_name][1])##
except KeyError:
update_table['paramAttributeImportant'].append('0')##
update_table['paramAttributeMatch'].append('0')##
update_table['paramAttributeStandard'].append('0')##
update_table['value'].append(name_param_dict[param_key_name])##
update_table['paramSource'].append('模型参数项')##
update_table['state'].append('0')##
update_table['subcategorycode'].append(categorycode)#
for param_key_ori in product_param_dict.keys():
update_table['batch'].append(now_time)#
update_table['source'].append(product_channel)#
update_table['productId'].append(SKU)#
update_table['productName'].append(f'{name};')#
update_table['param'].append(param_key_ori)##
try:
update_table['paramAttributeImportant'].append(param_state_dict[param_key_ori][0])##
update_table['paramAttributeMatch'].append(param_state_dict[param_key_ori][2])##
update_table['paramAttributeStandard'].append(param_state_dict[param_key_ori][1])##
except KeyError:
update_table['paramAttributeImportant'].append('0')##
update_table['paramAttributeMatch'].append('0')##
update_table['paramAttributeStandard'].append('0')##
update_table['value'].append(product_param_dict[param_key_ori])##
update_table['paramSource'].append('原始参数项')##
update_table['state'].append('1')##
update_table['subcategorycode'].append(categorycode)#
for param_key_crawl in crawl_param_dict.keys():
if crawl_param_dict[param_key_crawl] == '爬取不到数据':
continue
update_table['batch'].append(now_time)#
update_table['source'].append(product_channel)#
update_table['productId'].append(SKU)#
update_table['productName'].append(f'{name};')#
update_table['param'].append(param_key_crawl)##
try:
update_table['paramAttributeImportant'].append(param_state_dict[param_key_crawl][0])##
update_table['paramAttributeMatch'].append(param_state_dict[param_key_crawl][2])##
update_table['paramAttributeStandard'].append(param_state_dict[param_key_crawl][1])##
except KeyError:
update_table['paramAttributeImportant'].append('0')##
update_table['paramAttributeMatch'].append('0')##
update_table['paramAttributeStandard'].append('0')##
update_table['value'].append(crawl_param_dict[param_key_crawl])##
update_table['paramSource'].append('爬取参数项')##
update_table['state'].append('1')##
update_table['subcategorycode'].append(categorycode)#
model.clean()
except FileNotFoundError:
for SKU,name,params,producttype in zip(data_categorycode['SKU'],data_categorycode['产品名称'],data_categorycode['参数项'],data_categorycode['产品型号'],data_categorycode['来源']):
m += 1
print(m,end='\r')
product_param_dict = {}#原始参数项对应
try:
params = eval(params)
except TypeError:
pass
for param_key in params.keys():
if '\t' in param_key or ' ' in param_key:
params[param_key.replace('\t','').replace(' ','')] = params.pop(param_key) #去除参数项的特殊符号
for param_key_2 in params.keys():
if param_key_2 in param_dict.keys():
product_param_dict[param_dict[param_key_2]] = params[param_key_2]
elif param_key_2 in ZI_subtitle_list:
product_param_dict[param_key_2] = params[param_key_2]
else:
pass
if '产品型号' not in product_param_dict.keys():
product_param_dict['产品型号'] = producttype
if categorycode in crawl_category_list:
try:
crawl_param_dict = crawler.crawl_zol(producttype)
except TypeError:
crawl_param_dict = {}
else:
crawl_param_dict = {}
for param_key_ori in product_param_dict.keys():
update_table['batch'].append(now_time)#
update_table['source'].append(product_channel)#
update_table['productId'].append(SKU)#
update_table['productName'].append(f'{name};')#
update_table['param'].append(param_key_ori)##
try:
update_table['paramAttributeImportant'].append(param_state_dict[param_key_ori][0])##
update_table['paramAttributeMatch'].append(param_state_dict[param_key_ori][2])##
update_table['paramAttributeStandard'].append(param_state_dict[param_key_ori][1])##
except KeyError:
update_table['paramAttributeImportant'].append('0')##
update_table['paramAttributeMatch'].append('0')##
update_table['paramAttributeStandard'].append('0')##
update_table['value'].append(product_param_dict[param_key_ori])##
update_table['paramSource'].append('原始参数项')##
update_table['state'].append('1')##
update_table['subcategorycode'].append(categorycode)#
for param_key_crawl in crawl_param_dict.keys():
if crawl_param_dict[param_key_crawl] == '爬取不到数据':
continue
update_table['batch'].append(now_time)#
update_table['source'].append(product_channel)#
update_table['productId'].append(SKU)#
update_table['productName'].append(f'{name};')#
update_table['param'].append(param_key_crawl)##
try:
update_table['paramAttributeImportant'].append(param_state_dict[param_key_crawl][0])##
update_table['paramAttributeMatch'].append(param_state_dict[param_key_crawl][2])##
update_table['paramAttributeStandard'].append(param_state_dict[param_key_crawl][1])##
except KeyError:
update_table['paramAttributeImportant'].append('0')##
update_table['paramAttributeMatch'].append('0')##
update_table['paramAttributeStandard'].append('0')##
update_table['value'].append(crawl_param_dict[param_key_crawl])##
update_table['paramSource'].append('爬取参数项')##
update_table['state'].append('1')##
update_table['subcategorycode'].append(categorycode)#
update_table_df = pd.DataFrame.from_dict(update_table)
#update_table_df.to_excel(f'data_upload_history/product_parameter_process_{now_time}_{channel}.xlsx')
#product_table.to_excel(f'data_upload_history/product_api_data_{now_time}_{channel}.xlsx')
update_table_df.to_sql('Product_Parameter_Process', sql_ZIdatabase.engine, if_exists='append', index=False)
product_table.to_sql('Product_Api_Data', sql_ZIdatabase.engine, if_exists='append', index=False)
update_sku_list = set(list(product_table['productId']))
channel_sql = sql_find(database=f'reverse_data',localhost=False)
for sku in update_sku_list:
channel_sql.cursor.execute(f"update product_all set state='9' where sku='{sku}' and state='8'")
print('结束!')
return update_table_df
class crawl_data_fetch():
def __init__(self, localhost = False, source = 'reverse_data', channel = 'LXWL'):
'''
source为反向爬取存储数据的库。
localhost为布尔型,决定是否用本地服务器。
channel为来源。
'''
self.brand_table = pd.read_excel('brandnormal.xlsx')
self.tool = tool()
self.sql_crawl = sql_find(source, localhost)
self.sql_ZH = sql_find('zi_zh', localhost)
self.sql_ZIdatabase = sql_find('ZI_DataBase', localhost)
self.source = source
self.channel = channel
self.index = Index()
def find_brandcode(self, normalbrand, english_brand):
brand_find = self.brand_table[self.brand_table['标准化品牌']==normalbrand]['BrandCode'].tolist()
if len(brand_find) == 0:
return '没有对应指数品牌'
if len(brand_find) == 1:
return brand_find[0]
else:
brand_find = self.brand_table[self.brand_table['标准化品牌']==english_brand]['BrandCode'].tolist()
if len(brand_find) == 0:
return '没有对应指数品牌'
else:
return brand_find[0]
def brandcode_search(self, brand):
normalbrand = BN(brand)
english_brand = re.sub(r'[^A-Za-z]', '', brand).upper()
brandcode = self.find_brandcode(brand.upper(), 'XXXXXXXXXXXXX')
if brandcode != '没有对应指数品牌':
return brandcode
brandcode = self.find_brandcode(normalbrand, english_brand)
brandcode = self.tool.judge_brand(normalbrand, brandcode)
if brandcode != '没有对应指数品牌':
return brandcode
brandcode = self.tool.judge_brand(english_brand, brandcode)
return brandcode
def get_crawl_sku(self):
if self.channel in ['JD','SN','GM']:
self.sql_crawl.cursor.execute(f"select product_id from product_all where productcode is null and state='1' and (ziying='1' or ziying is null) and (dingzhi='1' or ziying is null) and source='{self.channel}'")
else:
self.sql_crawl.cursor.execute(f"select product_id from product_all where productcode is null and state='1' and (ziying='1' or ziying is null) and (dingzhi='1' or ziying is null) and (source <> 'JD' and source <> 'GM' and source <>'SN')")
sku_data = self.sql_crawl.cursor.fetchall()
sku_list = []
for sku in sku_data:
sku = sku[0]
sku_list.append(sku)
sku_set = list(set(sku_list))
return sku_set
def get_data_crawl(self, product_id):
self.sql_crawl.cursor.execute(f"select channel_sku,brand,product_name,channel_product_classify,create_time,channel_id,id,channel_product_id from product where product_id='{product_id}'")
data = self.sql_crawl.cursor.fetchall()[0]
data = list(data)
self.sql_crawl.cursor.execute(f"select 指数子类,指数子类编码,产品型号 from excel_data where sku='{data[6]}'")
ZI_SubCategory_data = self.sql_crawl.cursor.fetchone()
if ZI_SubCategory_data[1] is None:
ZI_SubCategoryCode = '没有匹配的指数子类编码'
else:
ZI_SubCategoryCode = ZI_SubCategory_data[1]
data.append(ZI_SubCategoryCode)
if ZI_SubCategory_data[0] is None:
ZIname = '没有匹配的指数子类编码'
else:
ZIname = ZI_SubCategory_data[0]
data.append(ZIname)
if ZI_SubCategory_data[2] is None:
ZItype = '该产品没有型号。'
else:
ZItype = ZI_SubCategory_data[2]
self.sql_crawl.cursor.execute(f"select attr_second,value from product_attr where product_id='{product_id}'")
params = self.sql_crawl.cursor.fetchall()
param_dict = {}
for param in params:
param_dict[param[0].replace(r'\t','')]=param[1]
data.append(param_dict)
brand = data[1]
brandcode = str(self.brandcode_search(brand)).zfill(5)
data.append(brandcode)
if brandcode != '没有对应指数品牌':
self.sql_ZIdatabase.cursor.execute(f"select BrandName from ZI_BrandList where BrandID ='{brandcode}'")
try:
ZIbrand = self.sql_ZIdatabase.cursor.fetchone()[0]
except TypeError:
ZIbrand = '没有对应指数品牌'
else:
ZIbrand = '没有对应指数品牌'
data.append(ZIbrand)
self.sql_crawl.cursor.execute(f"select price from product_price where product_id='{product_id}'")
try:
price = self.sql_crawl.cursor.fetchone()[0]
except TypeError:
price = decimal.Decimal(0)
data.append(price)
data.append(ZItype)
self.sql_crawl.cursor.execute(f"update product_all set state='8' where product_id='{product_id}'")
return data
def run(self):
sku_list = self.get_crawl_sku()
data_dict = {}
for i in range(len(sku_list)):
try:
data = self.get_data_crawl(sku_list[i])
data_dict[data[0]] = {
'品牌':data[1],
'指数品牌':data[12],
'指数品牌编码':data[11],
'产品名称':data[2],
'供应商子类':data[3],
'指数子类':data[9],
'指数子类编码':data[8],
'url':data[7],
'更新日期':data[4],
'参数项':data[10],
'产品型号':data[14],
'产品价格':data[13],
'来源':data[5]
}
except OSError:
print(f'{sku_list[i]}出错。')
continue
try:
print(self.index(i, len(sku_list)-1), end=f'% 共{len(sku_list)}款产品,目前第{i+1}款。')
except:
pass
data_table = pd.DataFrame.from_dict(data_dict, orient='index', dtype=None, columns=None)
data_table = data_table.reset_index()
try:
data_table.columns = ['SKU','品牌','指数品牌','指数品牌编码','产品名称','供应商子类','指数子类','指数子类编码','url','更新日期','参数项','产品型号','产品价格','来源']
return data_table
except ValueError:
return False
def crawl_data_run():
thread_JD = myThread_crawl('JD')
thread_GM = myThread_crawl('GM')
thread_SN = myThread_crawl('SN')
thread_OTHERS = myThread_crawl('OTHERS')
thread_JD.start()
thread_GM.start()
thread_SN.start()
thread_OTHERS.start()
thread_JD.join()
thread_GM.join()
thread_SN.join()
thread_OTHERS.join()
if __name__ == '__main__': if __name__ == '__main__':
''' '''
thread_DL = myThread('DL') thread_DL = myThread('DL')
...@@ -615,7 +1041,9 @@ if __name__ == '__main__': ...@@ -615,7 +1041,9 @@ if __name__ == '__main__':
channel = 'SN' channel = 'SN'
data_api = data_fetch(model='LXWL_model', localhost=False, source=f'ZH_{channel}') data_api = data_fetch(model='LXWL_model', localhost=False, source=f'ZH_{channel}')
data_api_table = data_api.run() data_api_table = data_api.run()
'''
data_api_table = pd.read_excel('ZH_SN_data_2020-01-13wbp.xlsx',converters={'SKU':str,'指数品牌编码':str,'指数子类编码':str}) data_api_table = pd.read_excel('ZH_SN_data_2020-01-13wbp.xlsx',converters={'SKU':str,'指数品牌编码':str,'指数子类编码':str})
channel = 'SN' channel = 'SN'
param_extract_function(data_api_table,channel) param_extract_function(data_api_table,channel)
'''
crawl_data_run()
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment