mdbq 3.7.4__py3-none-any.whl → 3.7.5__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.
Files changed (45) hide show
  1. {mdbq-3.7.4.dist-info → mdbq-3.7.5.dist-info}/METADATA +1 -1
  2. mdbq-3.7.5.dist-info/RECORD +4 -0
  3. {mdbq-3.7.4.dist-info → mdbq-3.7.5.dist-info}/WHEEL +1 -1
  4. mdbq-3.7.5.dist-info/top_level.txt +1 -0
  5. mdbq/__init__.py +0 -1
  6. mdbq/__version__.py +0 -3
  7. mdbq/aggregation/__init__.py +0 -4
  8. mdbq/aggregation/aggregation_bak.py +0 -1438
  9. mdbq/aggregation/datashow_bak.py +0 -1264
  10. mdbq/aggregation/optimize_data.py +0 -76
  11. mdbq/aggregation/query_data.py +0 -3869
  12. mdbq/bdup/__init__.py +0 -5
  13. mdbq/bdup/bdup.py +0 -111
  14. mdbq/config/__init__.py +0 -4
  15. mdbq/config/default.py +0 -131
  16. mdbq/config/myconfig.py +0 -32
  17. mdbq/config/products.py +0 -159
  18. mdbq/config/set_support.py +0 -22
  19. mdbq/dataframe/__init__.py +0 -4
  20. mdbq/dataframe/converter.py +0 -107
  21. mdbq/log/__init__.py +0 -4
  22. mdbq/log/mylogger.py +0 -66
  23. mdbq/log/spider_logging.py +0 -55
  24. mdbq/mongo/__init__.py +0 -4
  25. mdbq/mongo/mongo.py +0 -729
  26. mdbq/mysql/__init__.py +0 -4
  27. mdbq/mysql/mysql.py +0 -1784
  28. mdbq/mysql/s_query.py +0 -211
  29. mdbq/mysql/year_month_day.py +0 -38
  30. mdbq/other/__init__.py +0 -4
  31. mdbq/other/download_sku_picture.py +0 -985
  32. mdbq/other/porxy.py +0 -115
  33. mdbq/other/pov_city.py +0 -405
  34. mdbq/other/sku_picture_bak.py +0 -1081
  35. mdbq/other/ua_sj.py +0 -222
  36. mdbq/pbix/__init__.py +0 -4
  37. mdbq/pbix/pbix_refresh.py +0 -70
  38. mdbq/pbix/refresh_all.py +0 -158
  39. mdbq/pbix/refresh_all_old.py +0 -177
  40. mdbq/redis/__init__.py +0 -4
  41. mdbq/redis/getredis.py +0 -642
  42. mdbq/spider/__init__.py +0 -4
  43. mdbq/spider/aikucun.py +0 -494
  44. mdbq-3.7.4.dist-info/RECORD +0 -43
  45. mdbq-3.7.4.dist-info/top_level.txt +0 -1
mdbq/spider/aikucun.py DELETED
@@ -1,494 +0,0 @@
1
- # -*- coding:utf-8 -*-
2
- import datetime
3
- import getpass
4
- import json
5
- import os
6
- import pathlib
7
- import platform
8
- import re
9
- import time
10
- import warnings
11
- import requests
12
- import pandas as pd
13
- from selenium import webdriver
14
- from selenium.webdriver.support.wait import WebDriverWait
15
- from selenium.webdriver.common.by import By
16
- from selenium.webdriver.support import expected_conditions as EC
17
- from selenium.webdriver.chrome.service import Service
18
- from mdbq.config import set_support
19
- from selenium.webdriver.common.keys import Keys
20
- from mdbq.other import ua_sj
21
- from mdbq.mysql import mysql
22
- from mdbq.mysql import s_query
23
- from mdbq.config import default
24
- import socket
25
-
26
- warnings.filterwarnings('ignore')
27
-
28
-
29
- if platform.system() == 'Windows':
30
- # windows版本
31
- D_PATH = str(pathlib.Path(f'C:\\Users\\{getpass.getuser()}\\Downloads'))
32
- elif platform.system() == 'Linux':
33
- D_PATH = 'Downloads'
34
- if not os.path.exists(D_PATH):
35
- os.makedirs(D_PATH)
36
- else:
37
- D_PATH = str(pathlib.Path(f'/Users/{getpass.getuser()}/Downloads'))
38
- upload_path = os.path.join(D_PATH, '数据上传中心', '爱库存') # 此目录位于下载文件夹
39
-
40
- m_engine, username, password, host, port = default.get_mysql_engine(platform='Windows', hostname='xigua_lx', sql='mysql', local='remoto', config_file=None)
41
- print(username, password, host, port)
42
- # 实例化一个数据查询类,用来获取 cookies 表数据
43
- download = s_query.QueryDatas(username=username, password=password, host=host, port=port)
44
-
45
-
46
- def get_cookie_aikucun():
47
- """
48
- """
49
- _url = 'https://gray-merc.aikucun.com/index.html'
50
- cookie_path = os.path.join(set_support.SetSupport(dirname='support').dirname, 'cookies')
51
- filename_aikucun = 'cookie_aikucun.json'
52
- print(_url)
53
-
54
- option = webdriver.ChromeOptions() # 浏览器启动选项
55
- option.headless = True # False指定为无界面模式
56
- # 调整chrome启动配置
57
- option.add_argument("--disable-gpu")
58
- option.add_argument("--no-sandbox")
59
- option.add_argument("--disable-dev-shm-usage")
60
- option.add_experimental_option("excludeSwitches", ["enable-automation"])
61
- option.add_experimental_option("useAutomationExtension", False)
62
- # if platform.system() == 'Windows':
63
- # service = Service(os.path.join(f'C:\\Users\\{getpass.getuser()}\\chromedriver.exe'))
64
- # else:
65
- # service = Service('/usr/local/bin/chromedriver')
66
- if platform.system() == 'Windows':
67
- # 设置Chrome的路径
68
- chrome_path = os.path.join(f'C:\\Users\\{getpass.getuser()}', 'chrome\\chrome_win64\\chrome.exe')
69
- chromedriver_path = os.path.join(f'C:\\Users\\{getpass.getuser()}', 'chrome\\chromedriver.exe')
70
- # os.environ["webdriver.chrome.driver"] = chrome_path
71
- option.binary_location = chrome_path # windows 设置此参数有效
72
- service = Service(chromedriver_path)
73
- # service = Service(str(pathlib.Path(f'C:\\Users\\{getpass.getuser()}\\chromedriver.exe'))) # 旧路径
74
- else:
75
- # 设置Chrome的路径
76
- chrome_path = '/usr/local/chrome/Google Chrome for Testing.app'
77
- chromedriver_path = '/usr/local/chrome/chromedriver'
78
- os.environ["webdriver.chrome.driver"] = chrome_path
79
-
80
- service = Service(chromedriver_path)
81
- _driver = webdriver.Chrome(service=service, options=option) # 创建Chrome驱动程序实例
82
-
83
- # 登录
84
- _driver.get(_url)
85
- time.sleep(0.1)
86
- _driver.maximize_window() # 窗口最大化 方便后续加载数据
87
- print(f'请登录并切换到百宝箱,再保存 cookies: \n https://treasurebox.aikucun.com/dashboard/commodity/ranking/merchant?LS=true&shopId=1814114991487782914&from=menu&v=0.1936043279838604')
88
- wait = WebDriverWait(_driver, timeout=15)
89
- input_box = wait.until(
90
- EC.element_to_be_clickable(
91
- (By.XPATH, '//input[@placeholder="请输入用户名"]'))) #
92
- input_box.send_keys('广东万里马实业股份有限公司')
93
- input_box = wait.until(
94
- EC.element_to_be_clickable(
95
- (By.XPATH, '//input[@placeholder="请输入密码"]'))) #
96
- input_box.send_keys('wlm123$$$')
97
- time.sleep(0.1)
98
- elements = _driver.find_elements(
99
- By.XPATH, '//button[@class="merchant_login_btn" and contains(text(), "登录")]')
100
- _driver.execute_script("arguments[0].click();", elements[0])
101
- for i in range(100):
102
- try:
103
- wait.until(
104
- EC.element_to_be_clickable(
105
- (By.XPATH, '//div[@class="user-info nav-user-slider"]')))
106
- _driver.get(' https://treasurebox.aikucun.com/dashboard/commodity/ranking/merchant?LS=true&shopId=1814114991487782914&from=menu&v=0.1936043279838604')
107
- time.sleep(3)
108
- break
109
- except:
110
- time.sleep(5)
111
-
112
- d_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
113
- print(f'{d_time} 登录成功,正在获取cookie...')
114
- time.sleep(0.1)
115
-
116
- # 将cookies保存为json格式
117
- cookies_list = _driver.get_cookies()
118
- new_cookies_list = []
119
- for cookie in cookies_list:
120
- # 该字段有问题所以删除就可以
121
- if 'HWWAFSESTIME' in cookie:
122
- continue
123
- else:
124
- new_cookies_list.append(cookie)
125
-
126
- ######### 新增 写入 mysql #########
127
- set_typ = {
128
- '日期': 'date',
129
- 'domain': 'varchar(100)',
130
- 'expiry': 'int',
131
- 'httpOnly': 'varchar(20)',
132
- 'name': 'varchar(50)',
133
- 'path': 'varchar(50)',
134
- 'sameSite': 'varchar(50)',
135
- 'secure': 'varchar(50)',
136
- 'value': 'text',
137
- '更新时间': 'timestamp'
138
- }
139
- _cookies_list = []
140
- for item in cookies_list:
141
- new_dict = {'日期': datetime.datetime.today().strftime('%Y-%m-%d'), }
142
- for k, v in item.items():
143
- if v is None:
144
- v = 'None'
145
- new_dict.update({k: v})
146
- if 'expiry' not in new_dict:
147
- new_dict.update({'expiry': 0})
148
- new_dict.update({'更新时间': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')})
149
- _cookies_list.append(new_dict)
150
- m_engine.insert_many_dict(
151
- db_name='cookie文件',
152
- table_name='main_aikucun',
153
- dict_data_list=_cookies_list,
154
- set_typ=set_typ,
155
- allow_not_null=True, # 允许插入空值
156
- )
157
- #############################################
158
-
159
- json_file = os.path.join(cookie_path, filename_aikucun)
160
- with open(json_file, 'w', encoding='utf-8') as f:
161
- json.dump(new_cookies_list, f, ensure_ascii=False, sort_keys=True, indent=4)
162
- print(f'cookie已保存: {json_file}')
163
-
164
- # _file = os.path.join(cookie_path, filename_aikucun)
165
- # with open(_file, 'w') as f:
166
- # # 将cookies保存为json格式
167
- # cookies_list = _driver.get_cookies()
168
- # # for cookie in cookies_list:
169
- # # # 该字段有问题所以删除就可以
170
- # # if 'expiry' in cookie:
171
- # # del cookie['expiry']
172
- # # # if 'domain' in cookie:
173
- # # # cookie['domain'] = '.taobao.com'
174
- # cookies_list = json.dumps(cookies_list)
175
- # f.write(cookies_list)
176
- # print(f'cookie已保存: {_file}')
177
- _driver.quit()
178
-
179
-
180
- class AikuCun:
181
- def __init__(self):
182
- # self.url = 'https://gray-merc.aikucun.com/index.html'
183
- self.sp_url = 'https://treasurebox.aikucun.com/dashboard/commodity/ranking/merchant?LS=true&shopId=1814114991487782914&from=menu&v=0.1936043279838604'
184
- self.cookie_path = os.path.join(set_support.SetSupport(dirname='support').dirname, 'cookies')
185
-
186
- def login(self, shop_name='aikucun', headless=False):
187
- option = webdriver.ChromeOptions()
188
- if headless:
189
- option.add_argument("--headless") # 设置无界面模式
190
- # 调整chrome启动配置
191
- option.add_argument("--disable-gpu")
192
- option.add_argument("--no-sandbox")
193
- option.add_argument("--disable-dev-shm-usage")
194
- option.add_experimental_option("excludeSwitches", ["enable-automation"])
195
- option.add_experimental_option('excludeSwitches', ['enable-logging']) # 禁止日志输出,减少控制台干扰
196
- option.add_experimental_option("useAutomationExtension", False)
197
- option.add_argument('--ignore-ssl-error') # 忽略ssl错误
198
- prefs = {
199
- 'profile.default_content_settings.popups': 0, # 禁止弹出所有窗口
200
- "browser.download.manager. showAlertOnComplete": False, # 下载完成后不显示下载完成提示框
201
- "profile.default_content_setting_values.automatic_downloads": 1, # 允许自动下载多个文件
202
- }
203
-
204
- option.add_experimental_option('perfLoggingPrefs', {
205
- 'enableNetwork': True,
206
- 'enablePage': False,
207
- })
208
- option.set_capability("goog:loggingPrefs", {
209
- 'browser': 'ALL',
210
- 'performance': 'ALL',
211
- })
212
- option.set_capability("goog:perfLoggingPrefs", {
213
- 'enableNetwork': True,
214
- 'enablePage': False,
215
- 'enableTimeline': False
216
- })
217
-
218
- option.add_experimental_option('prefs', prefs)
219
- option.add_experimental_option('excludeSwitches', ['enable-automation']) # 实验性参数, 左上角小字
220
-
221
- # 修改默认下载文件夹路径
222
- option.add_experimental_option("prefs", {"download.default_directory": f'{upload_path}'})
223
-
224
- # # 通过excludeSwitches参数禁用默认的启动路径
225
- # option.add_experimental_option('excludeSwitches', ['enable-automation'])
226
-
227
- if platform.system() == 'Windows':
228
- # 设置 chrome 和 chromedriver 启动路径
229
- chrome_path = os.path.join(f'C:\\Users\\{getpass.getuser()}', 'chrome\\chrome_win64\\chrome.exe')
230
- chromedriver_path = os.path.join(f'C:\\Users\\{getpass.getuser()}', 'chrome\\chromedriver.exe')
231
- # os.environ["webdriver.chrome.driver"] = chrome_path
232
- option.binary_location = chrome_path # windows 设置此参数有效
233
- service = Service(chromedriver_path)
234
- # service = Service(str(pathlib.Path(f'C:\\Users\\{getpass.getuser()}\\chromedriver.exe'))) # 旧路径
235
- elif platform.system() == 'Darwin':
236
- chrome_path = '/usr/local/chrome/Google Chrome for Testing.app'
237
- chromedriver_path = '/usr/local/chrome/chromedriver'
238
- os.environ["webdriver.chrome.driver"] = chrome_path
239
- # option.binary_location = chrome_path # Macos 设置此参数报错
240
- service = Service(chromedriver_path)
241
- else:
242
- chrome_path = '/usr/local/chrome/Google Chrome for Testing.app'
243
- chromedriver_path = '/usr/local/chrome/chromedriver'
244
- os.environ["webdriver.chrome.driver"] = chrome_path
245
- # option.binary_location = chrome_path # macos 设置此参数报错
246
- service = Service(chromedriver_path)
247
- _driver = webdriver.Chrome(options=option, service=service) # 创建Chrome驱动程序实例
248
- _driver.maximize_window() # 窗口最大化 方便后续加载数据
249
-
250
- # 登录
251
- _driver.get(self.sp_url)
252
- _driver.delete_all_cookies() # 首先清除浏览器打开已有的cookies
253
- name_lists = os.listdir(self.cookie_path) # cookie 放在主目录下的 cookies 文件夹
254
- for name in name_lists:
255
- if shop_name in name and name.endswith('.json') and '~' not in name and '.DS' not in name:
256
- with open(os.path.join(self.cookie_path, name), 'r') as f:
257
- cookies_list = json.load(f) # 使用json读取cookies 注意读取的是文件 所以用load而不是loads
258
- for cookie in cookies_list:
259
- _driver.add_cookie(cookie) # 添加cookies信息
260
- # print(cookie)
261
- db_name = 'cookie文件'
262
- table_name = f'main_{shop_name}'
263
- df = download.data_to_df(
264
- db_name=db_name,
265
- table_name=table_name,
266
- start_date='2025-01-01',
267
- end_date='2030-12-11',
268
- projection={
269
- 'domain': 1,
270
- 'expiry': 1,
271
- 'httpOnly': 1,
272
- 'name': 1,
273
- 'path': 1,
274
- 'sameSite': 1,
275
- 'secure': 1,
276
- 'value': 1,
277
- '更新时间': 1
278
- },
279
- )
280
- # 仅保留最新日期的数据
281
- idx = df.groupby('name')['更新时间'].idxmax()
282
- df = df.loc[idx]
283
- df.pop('更新时间')
284
- for item in df.to_dict('records'):
285
- new_dict = {}
286
- for k, v in item.items():
287
- if v == 'False':
288
- v = False
289
- new_dict.update({k: v})
290
- # _driver.add_cookie(new_dict) # 添加cookies信息
291
-
292
- _driver.refresh()
293
- time.sleep(3)
294
- return _driver
295
-
296
- def get_data(self, shop_name='aikucun', date_num=1, headless=True):
297
- """
298
- date_num: 获取最近 N 天数据,0表示今天
299
- 所有数据都是逐日下载
300
- """
301
-
302
- _driver = self.login(shop_name=shop_name, headless=headless)
303
-
304
- _driver.get(self.sp_url)
305
- time.sleep(3)
306
- # breakpoint()
307
-
308
- today = datetime.date.today()
309
- for date_s in range(date_num):
310
- new_date = today - datetime.timedelta(days=date_s) # 会用作文件名
311
- now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
312
- print(f'{now} 正在下载爱库存文件 {date_s+1}/{date_num}: {new_date}')
313
- str_date = str(new_date)[2:]
314
- wait = WebDriverWait(_driver, timeout=15) #
315
- elements = _driver.find_elements(
316
- By.XPATH, '//input[@placeholder="开始日期"]')
317
- # _driver.execute_script("arguments[0].click();", elements[0]) # 点击
318
-
319
- input_box = wait.until(
320
- EC.element_to_be_clickable(
321
- (By.XPATH, '//input[@placeholder="开始日期"]'))) #
322
-
323
- # from selenium.webdriver.common.keys import Keys
324
- for i in range(8):
325
- input_box.send_keys(Keys.BACKSPACE)
326
- input_box.send_keys(str_date)
327
- time.sleep(1)
328
- input_box = wait.until(
329
- EC.element_to_be_clickable(
330
- (By.XPATH, '//input[@placeholder="结束日期"]'))) # 文件名输入框
331
-
332
- for i in range(8):
333
- input_box.send_keys(Keys.BACKSPACE)
334
- input_box.send_keys(str_date)
335
- time.sleep(2)
336
- input_box.send_keys(Keys.ENTER)
337
- time.sleep(2)
338
- wait.until(EC.presence_of_element_located((By.XPATH, '//button/span[contains(text(), "查询")]')))
339
- elements = _driver.find_elements(
340
- By.XPATH, '//button/span[contains(text(), "查询")]')
341
- _driver.execute_script("arguments[0].click();", elements[0]) # 点击
342
- time.sleep(5)
343
- wait.until(EC.presence_of_element_located(
344
- (By.XPATH,
345
- '//button[@class="el-button el-button--primary el-button--small is-plain"]/span[contains(text(), "下载数据")]')))
346
-
347
- elements = _driver.find_elements(
348
- By.XPATH,
349
- '//div[@class="ak-page-list__table-empty" and contains(text(), "暂无数据")]')
350
- if elements:
351
- print(f'cookies 可能已过期,无法下载')
352
- _driver.quit()
353
- return
354
-
355
- elements = _driver.find_elements(
356
- By.XPATH,
357
- '//button[@class="el-button el-button--primary el-button--small is-plain"]/span[contains(text(), "下载数据")]')
358
- _driver.execute_script("arguments[0].click();", elements[0]) # 点击
359
- time.sleep(5)
360
- self.clean_data(date=new_date) # 每下载一个文件,需要立即清洗数据
361
- _driver.quit()
362
-
363
- def clean_data(self, date):
364
- set_typ = {
365
- '日期': 'date',
366
- '店铺名称': 'varchar(100)',
367
- 'spu_id': 'varchar(100)',
368
- '图片': 'varchar(255)',
369
- '序号': 'smallint',
370
- '商品名称': 'varchar(255)',
371
- '商品款号': 'varchar(255)',
372
- '一级类目名称': 'varchar(255)',
373
- '二级类目名称': 'varchar(255)',
374
- '三级类目名称': 'varchar(255)',
375
- '数据更新时间': 'timestamp',
376
- '更新时间': 'timestamp',
377
- }
378
- for root, dirs, files in os.walk(upload_path, topdown=False):
379
- for name in files:
380
- if '~$' in name or 'DS_Store' in name:
381
- continue
382
- if name.endswith('csv'):
383
- pattern = re.findall('[\u4e00-\u9fff]+', name)
384
- if pattern:
385
- continue
386
- pattern = re.findall('^[0-9a-zA-Z_]{5,}-[0-9a-zA-Z_]+-[0-9a-zA-Z_]+-[0-9a-zA-Z_]+', name)
387
- if not pattern:
388
- continue
389
- df = pd.read_csv(os.path.join(root, name), encoding='gb2312', header=0, na_filter=False)
390
- if len(df) == 0:
391
- print(f'数据长度为 0 : {name}')
392
- os.remove(os.path.join(root, name))
393
- continue
394
- df.insert(loc=0, column='日期', value=date) # df中插入新列
395
- df.insert(loc=1, column='店铺名称', value='爱库存平台') # df中插入新列
396
- df.rename(columns={'spuId': 'spu_id'}, inplace=True)
397
- # df['数据更新时间'] = pd.to_datetime(df['数据更新时间'], format='%Y-%m-%d %H:%M:%S', errors='ignore')
398
- # df['数据更新时间'] = df['数据更新时间'].apply(lambda x: re.sub(' ', ' ', str(x)) if x else x)
399
- # print(df['数据更新时间'])
400
- # breakpoint()
401
- new_dict = {
402
- '日期': '',
403
- '店铺名称': '',
404
- '序号': '',
405
- '商品名称': '',
406
- 'spu_id': '',
407
- '商品款号': '',
408
- '一级类目名称': '',
409
- '二级类目名称': '',
410
- '三级类目名称': '',
411
- '访客量': '',
412
- '浏览量': '',
413
- '下单gmv': '',
414
- '成交gmv': '',
415
- '支付人数_成交': '',
416
- }
417
- _results = []
418
- for dict_data in df.to_dict(orient='records'):
419
- new_dict.update(dict_data)
420
- new_dict.update({'更新时间': datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')})
421
- _results.append(new_dict)
422
- if _results:
423
- m_engine.insert_many_dict(
424
- db_name='爱库存2',
425
- table_name='商品spu榜单',
426
- dict_data_list=_results,
427
- icm_update=['日期', '店铺名称', 'spu_id', '商品款号'],
428
- unique_main_key=None,
429
- set_typ=set_typ,
430
- )
431
-
432
- new_name = f'爱库存_商品榜单_spu_{date}_{date}.csv'
433
- df.to_csv(os.path.join(root, new_name), encoding='utf-8_sig', index=False)
434
- os.remove(os.path.join(root, name))
435
-
436
-
437
- def akucun(headless=True, date_num=10):
438
- akc = AikuCun()
439
- akc.get_data(shop_name='aikucun', date_num=date_num, headless=headless) # 获取最近 N 天数据,0表示今天
440
-
441
-
442
- class AikuCunNew:
443
-
444
- def __init__(self, shop_name,):
445
- self.shop_name = shop_name
446
- self.today = datetime.date.today()
447
- self.headers = {'User-Agent': ua_sj.get_ua()}
448
- self.cookie_path = os.path.join(set_support.SetSupport(dirname='support').dirname, 'cookies')
449
- self.cookies = {}
450
- self.get_cookies() # 更新 self.cookies 的值
451
- self.support_path = set_support.SetSupport(dirname='support').dirname
452
- self.start_date = (self.today - datetime.timedelta(days=15)).strftime('%Y-%m-%d')
453
- self.end_date = (self.today - datetime.timedelta(days=1)).strftime('%Y-%m-%d')
454
-
455
- def akc(self):
456
- """
457
- """
458
- start_date = self.start_date
459
- end_date = self.end_date
460
- url = 'https://treasurebox.aikucun.com/api/web/merchant/treasure/commodity/list/down?'
461
- self.headers.update({'Referer': 'https://treasurebox.aikucun.com/dashboard/commodity/ranking/merchant?LS=true&shopId=1814114991487782914&from=menu&v=0.1936043279838604'})
462
- now = datetime.datetime.now()
463
- timestamp_ms = round(time.mktime(now.timetuple()) * 1000 + now.microsecond / 1000)
464
- data = {
465
- 'time': timestamp_ms,
466
- 'sign': '2DA6A7580C859B374AE830CAD78BB84B'
467
- }
468
- res = requests.post(
469
- url,
470
- headers=self.headers,
471
- cookies=self.cookies,
472
- params=data
473
- )
474
- print(res.text)
475
-
476
-
477
-
478
- def get_cookies(self):
479
- files = os.listdir(self.cookie_path)
480
- for file in files:
481
- if self.shop_name in file and '~' not in file:
482
- with open(os.path.join(self.cookie_path, file), 'r') as f:
483
- cookies_data = json.load(f)
484
- break
485
- for data in cookies_data:
486
- self.cookies.update({data['name']: data['value']})
487
-
488
-
489
- if __name__ == '__main__':
490
- # get_cookie_aikucun() # 登录并获取 cookies
491
- akucun(date_num=30, headless=True) # 下载数据
492
-
493
- # a = AikuCunNew(shop_name='aikucun')
494
- # a.akc()
@@ -1,43 +0,0 @@
1
- mdbq/__init__.py,sha256=Il5Q9ATdX8yXqVxtP_nYqUhExzxPC_qk_WXQ_4h0exg,16
2
- mdbq/__version__.py,sha256=y9Mp_8x0BCZSHsdLT_q5tX9wZwd5QgqrSIENLrb6vXA,62
3
- mdbq/aggregation/__init__.py,sha256=EeDqX2Aml6SPx8363J-v1lz0EcZtgwIBYyCJV6CcEDU,40
4
- mdbq/aggregation/aggregation_bak.py,sha256=-yzApnlqSN2L0E1YMu5ml-W827qpKQvWPCOI7jj2kzY,80264
5
- mdbq/aggregation/datashow_bak.py,sha256=1AYSIDkdUx-4as1Ax2rPj0cExM9d-qFMrFYLAaPHNuk,54962
6
- mdbq/aggregation/optimize_data.py,sha256=foZGLDGJRhM2qOr2mTvB3InDFId7r4KBXrJfB3-xq1k,2639
7
- mdbq/aggregation/query_data.py,sha256=wYsBTRx6vmZ-dKQRdl_pnOPcI2djyIIb92MOUy097E0,174930
8
- mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
9
- mdbq/bdup/bdup.py,sha256=hJs815hGFwm_X5bP2i9XugG2w2ZY_F0n3-Q0hVpIPPw,4892
10
- mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
11
- mdbq/config/default.py,sha256=3IGc4aVuoL6sZh7xkM0GUXwHJD3-HCfYTnb1Q5ZL1UM,4976
12
- mdbq/config/myconfig.py,sha256=Akt-7KqSUBdoHQa4_Mw6YC4pA75219d-21iDO30iaD8,894
13
- mdbq/config/products.py,sha256=FbBIqmyaiq9h03FIeE9W2bwbLm2_5pr6xyzPV-u7Ges,5689
14
- mdbq/config/set_support.py,sha256=6EJC1PUCvP8HnRsljOrlBbK-65lZjh8_8mCCOVoPkFM,691
15
- mdbq/dataframe/__init__.py,sha256=2HtCN8AdRj53teXDqzysC1h8aPL-mMFy561ESmhehGQ,22
16
- mdbq/dataframe/converter.py,sha256=lETYhT7KXlWzWwqguqhk6vI6kj4rnOBEW1lhqKy2Abc,5035
17
- mdbq/log/__init__.py,sha256=Mpbrav0s0ifLL7lVDAuePEi1hJKiSHhxcv1byBKDl5E,15
18
- mdbq/log/mylogger.py,sha256=oaT7Bp-Hb9jZt52seP3ISUuxVcI19s4UiqTeouScBO0,3258
19
- mdbq/log/spider_logging.py,sha256=CzQIflfbMSBSBjHSO3fEhcG9Oiyj6cR-YU0tObMMyxM,1975
20
- mdbq/mongo/__init__.py,sha256=SILt7xMtQIQl_m-ik9WLtJSXIVf424iYgCfE_tnQFbw,13
21
- mdbq/mongo/mongo.py,sha256=M9DUeUCMPDngkwn9-ui0uTiFrvfNU1kLs22s5SmoNm0,31899
22
- mdbq/mysql/__init__.py,sha256=A_DPJyAoEvTSFojiI2e94zP0FKtCkkwKP1kYUCSyQzo,11
23
- mdbq/mysql/mysql.py,sha256=YgmSLkwjIUpjiGH3S-bTiaJCKe8As0WvHDOS6_ePyYs,98591
24
- mdbq/mysql/s_query.py,sha256=pj5ioJfUT81Su9S-km9G49gF5F2MmXXfw_oAIUzhN28,8794
25
- mdbq/mysql/year_month_day.py,sha256=VgewoE2pJxK7ErjfviL_SMTN77ki8GVbTUcao3vFUCE,1523
26
- mdbq/other/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
27
- mdbq/other/download_sku_picture.py,sha256=B5WA2-CQds2l36w4gLs1cgqzWqC1mbQTozqwb3vUQh0,44656
28
- mdbq/other/porxy.py,sha256=UHfgEyXugogvXgsG68a7QouUCKaohTKKkI4RN-kYSdQ,4961
29
- mdbq/other/pov_city.py,sha256=AEOmCOzOwyjHi9LLZWPKi6DUuSC-_M163664I52u9qw,21050
30
- mdbq/other/sku_picture_bak.py,sha256=JwSXYlzamVqcKCD2tRH2VqYVZNr8fM6f--kcGlTVRnM,50026
31
- mdbq/other/ua_sj.py,sha256=JuVYzc_5QZ9s_oQSrTHVKkQv4S_7-CWx4oIKOARn_9U,22178
32
- mdbq/pbix/__init__.py,sha256=Trtfaynu9RjoTyLLYBN2xdRxTvm_zhCniUkVTAYwcjo,24
33
- mdbq/pbix/pbix_refresh.py,sha256=JUjKW3bNEyoMVfVfo77UhguvS5AWkixvVhDbw4_MHco,2396
34
- mdbq/pbix/refresh_all.py,sha256=OBT9EewSZ0aRS9vL_FflVn74d4l2G00wzHiikCC4TC0,5926
35
- mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,7192
36
- mdbq/redis/__init__.py,sha256=YtgBlVSMDphtpwYX248wGge1x-Ex_mMufz4-8W0XRmA,12
37
- mdbq/redis/getredis.py,sha256=oyFwE-8c6uErSGYNIO0z2ng93mH0zstRLD86MWqF6M8,25636
38
- mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
39
- mdbq/spider/aikucun.py,sha256=qMU29gb72OK8GLBD-zENo1EmxuojRnuPyEdk5S2KDKw,21767
40
- mdbq-3.7.4.dist-info/METADATA,sha256=oviqiqBpDqxScLXtRS6FhvAg-WudJQX_--ykPyP9zlM,243
41
- mdbq-3.7.4.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
42
- mdbq-3.7.4.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
43
- mdbq-3.7.4.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- mdbq