mdbq 3.8.4__py3-none-any.whl → 3.8.6__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
mdbq/__version__.py CHANGED
@@ -1 +1 @@
1
- VERSION = '3.8.3'
1
+ VERSION = '3.8.6'
@@ -2921,9 +2921,11 @@ class MysqlDatasQuery:
2921
2921
  start_date, end_date = self.months_data(num=self.months)
2922
2922
  projection = {
2923
2923
  '日期': 1,
2924
- 'spi_id': 1,
2924
+ '平台': 1,
2925
+ '店铺名称': 1,
2926
+ 'spuid': 1,
2925
2927
  '商品名称': 1,
2926
- '品牌名称': 1,
2928
+ '品牌名': 1,
2927
2929
  '商品款号': 1,
2928
2930
  '一级类目名称': 1,
2929
2931
  '二级类目名称': 1,
@@ -2936,7 +2938,7 @@ class MysqlDatasQuery:
2936
2938
  '成交gmv': 1,
2937
2939
  '供货额': 1,
2938
2940
  '供货价': 1,
2939
- '销售爱豆人数_成交': 1,
2941
+ '销售爱豆人数': 1,
2940
2942
  '支付人数_交易': 1,
2941
2943
  '支付人数_成交': 1,
2942
2944
  '销售量_成交': 1,
@@ -2949,34 +2951,34 @@ class MysqlDatasQuery:
2949
2951
  '售罄率': 1,
2950
2952
  '在架sku数': 1,
2951
2953
  '可售sku数': 1,
2952
- 'sku数_交易': 1,
2953
- 'sku数_成交': 1,
2954
- '营销后供货额': 1,
2955
- '营销后供货价': 1,
2956
- '店铺名称': 1,
2954
+ '下单sku数': 1,
2955
+ '成交sku数': 1,
2956
+ '图片': 1,
2957
+ '更新时间': 1,
2957
2958
  }
2958
2959
  projection = {}
2959
2960
  df = self.download.data_to_df(
2960
2961
  db_name='爱库存2',
2961
- table_name='商品spu榜单',
2962
+ table_name='spu榜单',
2962
2963
  start_date=start_date,
2963
2964
  end_date=end_date,
2964
2965
  projection=projection,
2965
2966
  )
2966
- df.drop_duplicates(
2967
- subset=[
2968
- '日期',
2969
- '店铺名称',
2970
- 'spu_id',
2971
- '访客量',
2972
- '浏览量',
2973
- '下单gmv',
2974
- '成交gmv',
2975
- ], keep='last', inplace=True, ignore_index=True)
2967
+ idx = df.groupby(['日期', '店铺名称', 'spuid'])['更新时间'].idxmax()
2968
+ df = df.loc[idx]
2969
+
2970
+ # 调整列顺序, 定义需要前置的列
2971
+ cols_to_move = ['日期','平台','店铺名称','品牌名','商品名称', '商品款号','spuid', '一级类目名称', '二级类目名称', '三级类目名称']
2972
+ # 生成新的列顺序:前置列 + 剩余列(保持原顺序)
2973
+ new_columns = cols_to_move + [col for col in df.columns if col not in cols_to_move]
2974
+ # 调整DataFrame列顺序
2975
+ df = df[new_columns]
2976
+ df['更新时间'] = df.pop('更新时间')
2977
+ df = df.astype({'日期': 'datetime64[ns]'}, errors='ignore')
2976
2978
  set_typ = {
2977
2979
  '日期': 'date',
2978
2980
  '店铺名称': 'varchar(100)',
2979
- 'spu_id': 'varchar(100)',
2981
+ 'spuid': 'varchar(100)',
2980
2982
  '图片': 'varchar(255)',
2981
2983
  '序号': 'smallint',
2982
2984
  '商品名称': 'varchar(255)',
mdbq/spider/aikucun.py CHANGED
@@ -69,6 +69,7 @@ class AikuCun:
69
69
  self.today = datetime.date.today()
70
70
  self.start_date = (self.today - datetime.timedelta(days=7)).strftime('%Y-%m-%d')
71
71
  self.end_date = (self.today - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
72
+ self.error_count = 0
72
73
 
73
74
  def logining(self, shop_name='aikucun', headless=False):
74
75
  option = webdriver.ChromeOptions()
@@ -196,6 +197,9 @@ class AikuCun:
196
197
  )
197
198
 
198
199
  def get_data_from_bbx(self, start_date=None, end_date=None, item_type='spu', page_num=1, page_size=300):
200
+ """
201
+ 这里获取的数据等同于"查询"按钮的数据, 没有"营销后供货额/供货价" 这2个字段, 如果通过下载按钮的报表则有两个字段
202
+ """
199
203
  if start_date:
200
204
  self.start_date = start_date
201
205
  if end_date:
@@ -239,6 +243,9 @@ class AikuCun:
239
243
  num = 1
240
244
  results = []
241
245
  for date in date_list:
246
+ if self.error_count > 5:
247
+ print('已退出请求 -> self.error_count > 5')
248
+ break
242
249
  req_date = re.sub('-', '', date)
243
250
  data = {
244
251
  'beginDate': req_date,
@@ -266,11 +273,15 @@ class AikuCun:
266
273
  print(f'正在获取数据({num}/{len(date_list)}): {item_type}榜单 {date}')
267
274
  # print(res.json())
268
275
  if not res.json()['success']:
269
- print('requests 请求不成功, success 返回值应为 True')
276
+ print('没有获取到数据, requests 请求不成功, success 返回值应为 True')
277
+ num += 1
278
+ self.error_count += 1
270
279
  time.sleep(1)
271
280
  continue
272
281
  if not res.json()['data']['rows']:
273
- print("请求获取的数据 ['data']['rows'] 不能为空")
282
+ print("返回的数据字典异常, ['data']['rows'] 不能为空")
283
+ num += 1
284
+ self.error_count += 1
274
285
  time.sleep(1)
275
286
  continue
276
287
  results += [(date, res.json()['data']['rows'])]
@@ -390,7 +401,7 @@ class AikuCun:
390
401
  '图片': 'varchar(255)',
391
402
  '浏览量': 'INT',
392
403
  '序号': 'INT',
393
- 'spuId': 'varchar(50)',
404
+ 'spuid': 'varchar(50)',
394
405
  '商品名称': 'varchar(50)',
395
406
  '供货额': 'decimal(10,2)',
396
407
  '供货价': 'decimal(10,2)',
@@ -469,6 +480,7 @@ def main(start_date, end_date, item_type=['spu']):
469
480
  if not data_list:
470
481
  ak.logining()
471
482
  ak.save_token()
483
+ ak.error_count = 0 # 重置错误计数器
472
484
  else:
473
485
  break
474
486
 
@@ -482,7 +494,7 @@ def main(start_date, end_date, item_type=['spu']):
482
494
 
483
495
  if __name__ == '__main__':
484
496
  main(
485
- start_date='2025-03-06',
486
- end_date='2025-03-06',
497
+ start_date='2025-03-01',
498
+ end_date='2025-03-12',
487
499
  item_type=['spu', 'sku']
488
500
  )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: mdbq
3
- Version: 3.8.4
3
+ Version: 3.8.6
4
4
  Home-page: https://pypi.org/project/mdbq
5
5
  Author: xigua,
6
6
  Author-email: 2587125111@qq.com
@@ -1,7 +1,7 @@
1
1
  mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=N2YV132Ke9nxG8e_N4DlVVVafsd63H4Sbusd36SCowU,17
2
+ mdbq/__version__.py,sha256=Getdc-hdWx0sFteBzPqro7bCHfZKcq5ra0Qya_DV54w,17
3
3
  mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
- mdbq/aggregation/query_data.py,sha256=fbNyjRlJF3ycVBfAmj_JXMaauUmj3oIFIzKx2XV2sR4,180368
4
+ mdbq/aggregation/query_data.py,sha256=RUyrknC8IEOQnS_yFk_5JNSBdf-n5OcnmCAUgN-bvgw,180742
5
5
  mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
6
6
  mdbq/bdup/bdup.py,sha256=hJs815hGFwm_X5bP2i9XugG2w2ZY_F0n3-Q0hVpIPPw,4892
7
7
  mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
@@ -28,8 +28,8 @@ mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
28
28
  mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
29
29
  mdbq/redis/getredis.py,sha256=Uk8-cOWT0JU1qRyIVqdbYokSLvkDIAfcokmYj1ebw8k,24104
30
30
  mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
31
- mdbq/spider/aikucun.py,sha256=cYtLIEvvfKZ0pUeASpKaMY31vOKFa74KNcZQ3iCiL0c,19724
32
- mdbq-3.8.4.dist-info/METADATA,sha256=DKnJoT-wW88fh5-SnfD6v748tCpgii5KB7gqqe2fdAU,363
33
- mdbq-3.8.4.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
34
- mdbq-3.8.4.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
35
- mdbq-3.8.4.dist-info/RECORD,,
31
+ mdbq/spider/aikucun.py,sha256=bUjjPjNoW3EL6H89nnBdFEwnWgGuEB2CENuBxcvx0Kw,20284
32
+ mdbq-3.8.6.dist-info/METADATA,sha256=fNd7czbtUog5tHTxwy-K2cAtuVWndlREi2HWO4vkp_w,363
33
+ mdbq-3.8.6.dist-info/WHEEL,sha256=jB7zZ3N9hIM9adW7qlTAyycLYW9npaWKLRzaoVcLKcM,91
34
+ mdbq-3.8.6.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
35
+ mdbq-3.8.6.dist-info/RECORD,,
File without changes