mdbq 2.4.8__py3-none-any.whl → 2.5.0__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/aggregation/query_data.py +127 -122
- mdbq/company/copysh.py +1 -1
- mdbq/spider/aikucun.py +23 -16
- {mdbq-2.4.8.dist-info → mdbq-2.5.0.dist-info}/METADATA +1 -1
- {mdbq-2.4.8.dist-info → mdbq-2.5.0.dist-info}/RECORD +7 -7
- {mdbq-2.4.8.dist-info → mdbq-2.5.0.dist-info}/WHEEL +0 -0
- {mdbq-2.4.8.dist-info → mdbq-2.5.0.dist-info}/top_level.txt +0 -0
mdbq/aggregation/query_data.py
CHANGED
@@ -770,7 +770,11 @@ class MysqlDatasQuery:
|
|
770
770
|
df_dmp.sort_values('日期', ascending=True, ignore_index=True, inplace=True)
|
771
771
|
df_dmp.drop_duplicates(subset=['日期', '人群id', '消耗(元)'], keep='last', inplace=True, ignore_index=True)
|
772
772
|
df = pd.merge(df_dmp, df_crowd, left_on=['人群id'], right_on=['人群id'], how='left')
|
773
|
+
# 清除一些不必要的字符
|
774
|
+
df['用户年龄'] = df['用户年龄'].apply(lambda x: '~'.join(re.findall(r'^(\d+).*-(\d+)岁$', str(x))[0]) if '岁' in str(x) else x)
|
775
|
+
df['消费能力等级'] = df['消费能力等级'].apply(lambda x: f'L{''.join(re.findall(r'(\d)', str(x)))}' if '购买力' in str(x) else x)
|
773
776
|
# df.to_csv('/Users/xigua/Downloads/test3.csv', index=False, header=True, encoding='utf-8_sig')
|
777
|
+
# breakpoint()
|
774
778
|
return df
|
775
779
|
|
776
780
|
|
@@ -920,6 +924,7 @@ class GroupBy:
|
|
920
924
|
], keep='last', inplace=True, ignore_index=True)
|
921
925
|
return df
|
922
926
|
elif '天猫_人群报表' in table_name and '达摩盘' not in table_name:
|
927
|
+
""" 天猫推广人群报表独立生成消费力、年龄层、分类等特征,不依赖于达摩盘数据表 """
|
923
928
|
df.rename(columns={
|
924
929
|
'场景名字': '营销场景',
|
925
930
|
'主体id': '商品id',
|
@@ -1746,7 +1751,7 @@ class GroupBy:
|
|
1746
1751
|
'店铺优惠券',
|
1747
1752
|
'高转化',
|
1748
1753
|
'认知',
|
1749
|
-
'喜欢我', #
|
1754
|
+
'喜欢我', # 系统推荐宝贝/店铺访问相关人群
|
1750
1755
|
'未购买',
|
1751
1756
|
'种草',
|
1752
1757
|
'兴趣',
|
@@ -2059,126 +2064,126 @@ def data_aggregation(service_databases=[{}], months=1, is_juhe=True):
|
|
2059
2064
|
|
2060
2065
|
# 从数据库中获取数据, 返回包含 df 数据的字典
|
2061
2066
|
data_dict = [
|
2062
|
-
{
|
2063
|
-
|
2064
|
-
|
2065
|
-
|
2066
|
-
|
2067
|
-
},
|
2068
|
-
{
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
},
|
2074
|
-
{
|
2075
|
-
|
2076
|
-
|
2077
|
-
|
2078
|
-
|
2079
|
-
},
|
2080
|
-
{
|
2081
|
-
|
2082
|
-
|
2083
|
-
|
2084
|
-
|
2085
|
-
},
|
2086
|
-
{
|
2087
|
-
|
2088
|
-
|
2089
|
-
|
2090
|
-
|
2091
|
-
},
|
2092
|
-
{
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
2096
|
-
|
2097
|
-
},
|
2098
|
-
{
|
2099
|
-
|
2100
|
-
|
2101
|
-
|
2102
|
-
|
2103
|
-
},
|
2104
|
-
{
|
2105
|
-
|
2106
|
-
|
2107
|
-
|
2108
|
-
|
2109
|
-
},
|
2110
|
-
{
|
2111
|
-
|
2112
|
-
|
2113
|
-
|
2114
|
-
|
2115
|
-
},
|
2116
|
-
{
|
2117
|
-
|
2118
|
-
|
2119
|
-
|
2120
|
-
|
2121
|
-
},
|
2122
|
-
{
|
2123
|
-
|
2124
|
-
|
2125
|
-
|
2126
|
-
|
2127
|
-
},
|
2128
|
-
{
|
2129
|
-
|
2130
|
-
|
2131
|
-
|
2132
|
-
|
2133
|
-
},
|
2134
|
-
{
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
2139
|
-
},
|
2140
|
-
{
|
2141
|
-
|
2142
|
-
|
2143
|
-
|
2144
|
-
|
2145
|
-
},
|
2146
|
-
{
|
2147
|
-
|
2148
|
-
|
2149
|
-
|
2150
|
-
|
2151
|
-
},
|
2152
|
-
{
|
2153
|
-
|
2154
|
-
|
2155
|
-
|
2156
|
-
|
2157
|
-
},
|
2158
|
-
{
|
2159
|
-
|
2160
|
-
|
2161
|
-
|
2162
|
-
|
2163
|
-
},
|
2164
|
-
{
|
2165
|
-
|
2166
|
-
|
2167
|
-
|
2168
|
-
|
2169
|
-
},
|
2170
|
-
{
|
2171
|
-
|
2172
|
-
|
2173
|
-
|
2174
|
-
|
2175
|
-
},
|
2176
|
-
{
|
2177
|
-
|
2178
|
-
|
2179
|
-
|
2180
|
-
|
2181
|
-
},
|
2067
|
+
# {
|
2068
|
+
# '数据库名': '聚合数据', # 清洗完回传的目的地数据库
|
2069
|
+
# '集合名': '天猫_主体报表', # 清洗完回传的数据表名
|
2070
|
+
# '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费'],
|
2071
|
+
# '数据主体': sdq.tg_wxt(),
|
2072
|
+
# },
|
2073
|
+
# {
|
2074
|
+
# '数据库名': '聚合数据',
|
2075
|
+
# '集合名': '天猫生意经_宝贝指标',
|
2076
|
+
# '唯一主键': ['日期', '宝贝id'], # 不能加其他字段做主键,比如销售额,是变动的,不是唯一的
|
2077
|
+
# '数据主体': sdq.syj(),
|
2078
|
+
# },
|
2079
|
+
# {
|
2080
|
+
# '数据库名': '聚合数据',
|
2081
|
+
# '集合名': '天猫_店铺来源_日数据',
|
2082
|
+
# '唯一主键': ['日期', '一级来源', '二级来源', '三级来源', '访客数'],
|
2083
|
+
# '数据主体': sdq.dplyd(),
|
2084
|
+
# },
|
2085
|
+
# {
|
2086
|
+
# '数据库名': '聚合数据',
|
2087
|
+
# '集合名': '天猫_店铺来源_日数据_旧版',
|
2088
|
+
# '唯一主键': ['日期', '一级来源', '二级来源', '三级来源'],
|
2089
|
+
# '数据主体': sdq.dplyd_old(),
|
2090
|
+
# },
|
2091
|
+
# {
|
2092
|
+
# '数据库名': '聚合数据',
|
2093
|
+
# '集合名': '商品id编码表',
|
2094
|
+
# '唯一主键': ['宝贝id'],
|
2095
|
+
# '数据主体': sdq.idbm(),
|
2096
|
+
# },
|
2097
|
+
# {
|
2098
|
+
# '数据库名': '聚合数据',
|
2099
|
+
# '集合名': '商品id图片对照表',
|
2100
|
+
# '唯一主键': ['商品id'],
|
2101
|
+
# '数据主体': sdq.sp_picture(),
|
2102
|
+
# },
|
2103
|
+
# {
|
2104
|
+
# '数据库名': '聚合数据',
|
2105
|
+
# '集合名': '商品成本',
|
2106
|
+
# '唯一主键': ['款号'],
|
2107
|
+
# '数据主体': sdq.sp_cost(),
|
2108
|
+
# },
|
2109
|
+
# {
|
2110
|
+
# '数据库名': '聚合数据',
|
2111
|
+
# '集合名': '京东_京准通',
|
2112
|
+
# '唯一主键': ['日期', '产品线', '触发sku id', '跟单sku id', '花费', ],
|
2113
|
+
# '数据主体': sdq.jdjzt(),
|
2114
|
+
# },
|
2115
|
+
# {
|
2116
|
+
# '数据库名': '聚合数据',
|
2117
|
+
# '集合名': '京东_京准通_全站营销',
|
2118
|
+
# '唯一主键': ['日期', '产品线', '花费'],
|
2119
|
+
# '数据主体': sdq.jdqzyx(),
|
2120
|
+
# },
|
2121
|
+
# {
|
2122
|
+
# '数据库名': '聚合数据',
|
2123
|
+
# '集合名': '京东_sku_商品明细',
|
2124
|
+
# '唯一主键': ['日期', '商品id', '成交单量'],
|
2125
|
+
# '数据主体': sdq.sku_sales(),
|
2126
|
+
# },
|
2127
|
+
# {
|
2128
|
+
# '数据库名': '聚合数据',
|
2129
|
+
# '集合名': '京东_spu_商品明细',
|
2130
|
+
# '唯一主键': ['日期', '商品id', '成交单量'],
|
2131
|
+
# '数据主体': sdq.spu_sales(),
|
2132
|
+
# },
|
2133
|
+
# {
|
2134
|
+
# '数据库名': '聚合数据',
|
2135
|
+
# '集合名': '天猫_人群报表',
|
2136
|
+
# '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费', '人群名字'],
|
2137
|
+
# '数据主体': sdq.tg_rqbb(),
|
2138
|
+
# },
|
2139
|
+
# {
|
2140
|
+
# '数据库名': '聚合数据',
|
2141
|
+
# '集合名': '天猫_关键词报表',
|
2142
|
+
# '唯一主键': ['日期', '推广渠道', '营销场景', '商品id', '花费', '词类型', '词名字/词包名字',],
|
2143
|
+
# '数据主体': sdq.tg_gjc(),
|
2144
|
+
# },
|
2145
|
+
# {
|
2146
|
+
# '数据库名': '聚合数据',
|
2147
|
+
# '集合名': '天猫_超级直播',
|
2148
|
+
# '唯一主键': ['日期', '推广渠道', '营销场景', '花费'],
|
2149
|
+
# '数据主体': sdq.tg_cjzb(),
|
2150
|
+
# },
|
2151
|
+
# {
|
2152
|
+
# '数据库名': '聚合数据',
|
2153
|
+
# '集合名': '京东_关键词报表',
|
2154
|
+
# '唯一主键': ['日期', '产品线', '搜索词', '关键词', '展现数', '花费'],
|
2155
|
+
# '数据主体': sdq.jd_gjc(),
|
2156
|
+
# },
|
2157
|
+
# {
|
2158
|
+
# '数据库名': '聚合数据',
|
2159
|
+
# '集合名': '天猫_品销宝账户报表',
|
2160
|
+
# '唯一主键': ['日期', '报表类型', '推广渠道', '营销场景', '花费'],
|
2161
|
+
# '数据主体': sdq.pxb_zh(),
|
2162
|
+
# },
|
2163
|
+
# {
|
2164
|
+
# '数据库名': '聚合数据',
|
2165
|
+
# '集合名': '天猫店铺来源_手淘搜索',
|
2166
|
+
# '唯一主键': ['日期', '关键词', '访客数'],
|
2167
|
+
# '数据主体': sdq.tm_search(),
|
2168
|
+
# },
|
2169
|
+
# {
|
2170
|
+
# '数据库名': '聚合数据',
|
2171
|
+
# '集合名': '生意参谋_直播场次分析',
|
2172
|
+
# '唯一主键': ['场次id'],
|
2173
|
+
# '数据主体': sdq.zb_ccfx(),
|
2174
|
+
# },
|
2175
|
+
# {
|
2176
|
+
# '数据库名': '聚合数据',
|
2177
|
+
# '集合名': '多店推广场景_按日聚合',
|
2178
|
+
# '唯一主键': [],
|
2179
|
+
# '数据主体': sdq.tg_by_day(),
|
2180
|
+
# },
|
2181
|
+
# {
|
2182
|
+
# '数据库名': '聚合数据',
|
2183
|
+
# '集合名': '爱库存_商品spu榜单',
|
2184
|
+
# '唯一主键': [],
|
2185
|
+
# '数据主体': sdq.aikucun_bd_spu(),
|
2186
|
+
# },
|
2182
2187
|
{
|
2183
2188
|
'数据库名': '聚合数据',
|
2184
2189
|
'集合名': '达摩盘_人群报表',
|
@@ -2280,6 +2285,6 @@ def main():
|
|
2280
2285
|
|
2281
2286
|
|
2282
2287
|
if __name__ == '__main__':
|
2283
|
-
data_aggregation(service_databases=[{'company': 'mysql'}], months=
|
2288
|
+
data_aggregation(service_databases=[{'company': 'mysql'}], months=24, is_juhe=False) # 正常的聚合所有数据
|
2284
2289
|
# data_aggregation_one(service_databases=[{'company': 'mysql'}], months=1) # 单独聚合某一个数据库,具体库进函数编辑
|
2285
2290
|
# optimize_data.op_data(service_databases=[{'company': 'mysql'}], days=3650) # 立即启动对聚合数据的清理工作
|
mdbq/company/copysh.py
CHANGED
@@ -269,7 +269,7 @@ class TbFiles:
|
|
269
269
|
dir_files = f'\\\\192.168.1.198\\时尚事业部\\01.运营部\\0-电商周报-每周五更新'
|
270
270
|
files = os.listdir(dir_files)
|
271
271
|
for file in files:
|
272
|
-
if file.endswith('.xlsx') and '0-WLM_运营周报'
|
272
|
+
if file.endswith('.xlsx') and file.startswith('0-WLM_运营周报') and '~' not in file and 'baidu' not in file:
|
273
273
|
excel_file = os.path.join(dir_files, file)
|
274
274
|
r.refresh_excel(file=excel_file)
|
275
275
|
|
mdbq/spider/aikucun.py
CHANGED
@@ -48,7 +48,7 @@ def get_cookie_aikucun():
|
|
48
48
|
"""
|
49
49
|
_url = 'https://gray-merc.aikucun.com/index.html'
|
50
50
|
cookie_path = os.path.join(set_support.SetSupport(dirname='support').dirname, 'cookies')
|
51
|
-
filename_aikucun = 'cookie_aikucun.
|
51
|
+
filename_aikucun = 'cookie_aikucun.json'
|
52
52
|
print(_url)
|
53
53
|
|
54
54
|
option = webdriver.ChromeOptions() # 浏览器启动选项
|
@@ -90,20 +90,27 @@ def get_cookie_aikucun():
|
|
90
90
|
print(f'{d_time} 登录成功,正在获取cookie...')
|
91
91
|
time.sleep(0.1)
|
92
92
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
93
|
+
# 将cookies保存为json格式
|
94
|
+
cookies_list = _driver.get_cookies()
|
95
|
+
|
96
|
+
json_file = os.path.join(cookie_path, filename_aikucun)
|
97
|
+
with open(json_file, 'w', encoding='utf-8') as f:
|
98
|
+
json.dump(cookies_list, f, ensure_ascii=False, sort_keys=True, indent=4)
|
99
|
+
print(f'cookie已保存: {json_file}')
|
100
|
+
|
101
|
+
# _file = os.path.join(cookie_path, filename_aikucun)
|
102
|
+
# with open(_file, 'w') as f:
|
103
|
+
# # 将cookies保存为json格式
|
104
|
+
# cookies_list = _driver.get_cookies()
|
105
|
+
# # for cookie in cookies_list:
|
106
|
+
# # # 该字段有问题所以删除就可以
|
107
|
+
# # if 'expiry' in cookie:
|
108
|
+
# # del cookie['expiry']
|
109
|
+
# # # if 'domain' in cookie:
|
110
|
+
# # # cookie['domain'] = '.taobao.com'
|
111
|
+
# cookies_list = json.dumps(cookies_list)
|
112
|
+
# f.write(cookies_list)
|
113
|
+
# print(f'cookie已保存: {_file}')
|
107
114
|
_driver.quit()
|
108
115
|
|
109
116
|
|
@@ -178,7 +185,7 @@ class AikuCun:
|
|
178
185
|
_driver.delete_all_cookies() # 首先清除浏览器打开已有的cookies
|
179
186
|
name_lists = os.listdir(self.cookie_path) # cookie 放在主目录下的 cookies 文件夹
|
180
187
|
for name in name_lists:
|
181
|
-
if shop_name in name and name.endswith('.
|
188
|
+
if shop_name in name and name.endswith('.json') and '~' not in name and '.DS' not in name:
|
182
189
|
with open(os.path.join(self.cookie_path, name), 'r') as f:
|
183
190
|
cookies_list = json.load(f) # 使用json读取cookies 注意读取的是文件 所以用load而不是loads
|
184
191
|
for cookie in cookies_list:
|
@@ -5,13 +5,13 @@ mdbq/aggregation/aggregation.py,sha256=nPp5fOLktxejNEak3SyTnKLjwzK1l2xjbV45X-I4L
|
|
5
5
|
mdbq/aggregation/df_types.py,sha256=U9i3q2eRPTDY8qAPTw7irzu-Tlg4CIySW9uYro81wdk,8125
|
6
6
|
mdbq/aggregation/mysql_types.py,sha256=DQYROALDiwjJzjhaJfIIdnsrNs11i5BORlj_v6bp67Y,11062
|
7
7
|
mdbq/aggregation/optimize_data.py,sha256=Wis40oL04M7E1pkvgNPjyVFAUe-zgjimjIVAikxYY8Y,4418
|
8
|
-
mdbq/aggregation/query_data.py,sha256=
|
8
|
+
mdbq/aggregation/query_data.py,sha256=65ulg_i5bNb4RXjtBCDKgRSKXLJJd9bb16j0EbdFVXo,103875
|
9
9
|
mdbq/bdup/__init__.py,sha256=AkhsGk81SkG1c8FqDH5tRq-8MZmFobVbN60DTyukYTY,28
|
10
10
|
mdbq/bdup/bdup.py,sha256=LAV0TgnQpc-LB-YuJthxb0U42_VkPidzQzAagan46lU,4234
|
11
11
|
mdbq/clean/__init__.py,sha256=A1d6x3L27j4NtLgiFV5TANwEkLuaDfPHDQNrPBbNWtU,41
|
12
12
|
mdbq/clean/data_clean.py,sha256=ucfslhqXVZoH2QaXHSAWDky0GhIvH9f4GeNaHg4SrFE,104790
|
13
13
|
mdbq/company/__init__.py,sha256=qz8F_GsP_pMB5PblgJAUAMjasuZbOEp3qQOCB39E8f0,21
|
14
|
-
mdbq/company/copysh.py,sha256=
|
14
|
+
mdbq/company/copysh.py,sha256=NvlXCBZBcO2GIT5nLRYYqhOyHWM1-1RE7DHvgbj6jmQ,19723
|
15
15
|
mdbq/company/home_sh.py,sha256=42CZ2tZIXHLl2mOl2gk2fZnjH2IHh1VJ1s3qHABjonY,18021
|
16
16
|
mdbq/config/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
17
17
|
mdbq/config/get_myconf.py,sha256=cmNvsyoNa0RbZ9FOTjSd3jyyGwkxjUo0phvdHbGlrms,6010
|
@@ -40,8 +40,8 @@ mdbq/pbix/refresh_all_old.py,sha256=_pq3WSQ728GPtEG5pfsZI2uTJhU8D6ra-htIk1JXYzw,
|
|
40
40
|
mdbq/req_post/__init__.py,sha256=jso1oHcy6cJEfa7udS_9uO5X6kZLoPBF8l3wCYmr5dM,18
|
41
41
|
mdbq/req_post/req_tb.py,sha256=PexWSCPJNM6Tv0ol4lAWIhlOwsAr_frnjtcdSHCFiek,36179
|
42
42
|
mdbq/spider/__init__.py,sha256=RBMFXGy_jd1HXZhngB2T2XTvJqki8P_Fr-pBcwijnew,18
|
43
|
-
mdbq/spider/aikucun.py,sha256=
|
44
|
-
mdbq-2.
|
45
|
-
mdbq-2.
|
46
|
-
mdbq-2.
|
47
|
-
mdbq-2.
|
43
|
+
mdbq/spider/aikucun.py,sha256=KdihSB3q44jsXUQAldfWRVfCSrEw2MNbM-_BhP_29g4,14448
|
44
|
+
mdbq-2.5.0.dist-info/METADATA,sha256=TMjdFAFFDBDfOiCXJ9fafyYlA4V71QedBfcoUPkiZjM,245
|
45
|
+
mdbq-2.5.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
46
|
+
mdbq-2.5.0.dist-info/top_level.txt,sha256=2FQ-uLnCSB-OwFiWntzmwosW3X2Xqsg0ewh1axsaylA,5
|
47
|
+
mdbq-2.5.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|