Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
amazon_reports
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
common
amazon_reports
Commits
acaed936
Commit
acaed936
authored
Oct 31, 2024
by
邱阿朋
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
打印日志
parent
47a566ff
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
77 additions
and
45 deletions
+77
-45
coop.py
src/coop.py
+7
-18
logger.py
src/helper/logger.py
+10
-0
invoices.py
src/invoices.py
+7
-20
logger.py
src/logger/logger.py
+48
-0
returns.py
src/returns.py
+5
-7
No files found.
src/coop.py
View file @
acaed936
...
...
@@ -11,7 +11,7 @@ from DrissionPage import ChromiumPage
from
DrissionPage.errors
import
ElementNotFoundError
from
lxml
import
etree
from
helper
import
helper
,
excel
,
file
,
domain
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
country
=
None
...
...
@@ -32,17 +32,6 @@ def page_get(url):
full_url
=
host
+
url
page
.
get
(
full_url
,
timeout
=
3
)
while
True
:
time
.
sleep
(
1
)
title
=
page
.
title
if
title
==
"Amazon Sign-In"
:
print
(
"请登录账号"
)
continue
try
:
page
.
ele
(
"#cvf-submit-otp-button-announce"
)
print
(
"请输入验证码"
)
except
ElementNotFoundError
:
break
def
sku_relations
():
relations_dict
=
{}
...
...
@@ -81,12 +70,12 @@ def get_report_table_html(invoice_id):
# 获取报表表单内容
report_table_html
=
page
.
ele
(
"#backup-report-table"
)
.
html
if
report_table_html
is
None
or
report_table_html
==
""
:
print
(
"表单内容为空,刷新网页"
)
logger
.
logger
()
.
warning
(
"表单内容为空,刷新网页"
)
page
.
refresh
()
continue
return
report_table_html
except
ElementNotFoundError
:
print
(
"元素未找到,刷新网页"
)
logger
.
logger
()
.
warning
(
"元素未找到,刷新网页"
)
page
.
refresh
()
...
...
@@ -136,7 +125,7 @@ def export_item_read_data(invoice_id):
def
main
():
relation_data
=
sku_relations
()
# 获取 ASIN 与 SKU 的对应关系数据
coop_list
=
export_list_read_data
()
# 获取合作数据列表
print
(
f
"共计:{len(coop_list)} 条数据"
)
logger
.
logger
()
.
info
(
f
"共计:{len(coop_list)} 条数据"
)
i
=
0
new_coop_data
=
[]
...
...
@@ -144,13 +133,13 @@ def main():
for
_
,
coop
in
coop_list
.
iterrows
():
i
+=
1
invoice_id
=
coop
.
get
(
"Invoice ID"
)
# 获取发票 ID
print
({
"index"
:
i
,
"invoice_id"
:
invoice_id
})
logger
.
logger
()
.
info
({
"index"
:
i
,
"invoice_id"
:
invoice_id
})
item_coop_data
=
[]
# 根据发票 ID 获取 item 列表
item_list
=
export_item_read_data
(
invoice_id
)
if
item_list
is
None
:
print
(
f
"{invoice_id} 暂无报告信息"
)
logger
.
logger
()
.
warning
(
f
"{invoice_id} 暂无报告信息"
)
continue
for
_
,
item
in
item_list
.
iterrows
():
...
...
@@ -226,4 +215,4 @@ if __name__ == '__main__':
except
KeyboardInterrupt
:
pass
except
Exception
as
e
:
print
(
e
)
logger
.
logger
()
.
error
(
e
)
src/helper/logger.py
0 → 100644
View file @
acaed936
# coding: utf-8
import
os
from
src.logger.logger
import
ConsoleLog
console_log
=
ConsoleLog
()
def
logger
()
->
ConsoleLog
:
return
console_log
src/invoices.py
View file @
acaed936
...
...
@@ -11,7 +11,7 @@ from DrissionPage import ChromiumPage
from
DrissionPage.errors
import
ElementNotFoundError
from
lxml
import
etree
from
helper
import
helper
,
excel
,
file
,
domain
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
country
=
None
...
...
@@ -33,19 +33,6 @@ def page_get(url):
full_url
=
host
+
url
page
.
get
(
full_url
,
timeout
=
3
)
while
True
:
time
.
sleep
(
1
)
title
=
page
.
title
if
title
==
"Amazon Sign-In"
:
print
(
"请登录账号"
)
continue
try
:
page
.
ele
(
"#cvf-submit-otp-button-announce"
)
print
(
"请输入验证码"
)
except
ElementNotFoundError
:
break
def
export_list_read_data
():
new_file_name
=
'new_Payments.xlsx'
if
os
.
path
.
isfile
(
new_file_name
):
...
...
@@ -110,7 +97,7 @@ def export_details_read_data(invoice_number):
excel
.
remove_last_comma
(
file_name
)
break
except
ElementNotFoundError
:
print
(
"导出按钮不存在刷新网页"
)
logger
.
logger
()
.
warning
(
"导出按钮不存在刷新网页"
)
page
.
refresh
()
return
pd
.
read_csv
(
file_name
)
...
...
@@ -199,13 +186,13 @@ def click_get_price_data():
while
True
:
try
:
page
.
ele
(
"#pd"
,
timeout
=
5
)
.
click
()
print
(
"等待争议数据加载,5秒后获取表单数据"
)
logger
.
logger
()
.
debug
(
"等待争议数据加载,5秒后获取表单数据"
)
page
.
wait
(
5
)
table_html
=
page
.
ele
(
"#priceDiscrepancyWithDMSGridForm"
,
timeout
=
5
)
.
html
price_data
=
price_extract_data
(
table_html
)
return
price_data
except
ElementNotFoundError
:
print
(
"未获取到表数据"
)
logger
.
logger
()
.
warning
(
"未获取到表数据"
)
break
return
[]
...
...
@@ -261,7 +248,7 @@ def main():
list_data
=
export_list_read_data
()
excel
.
save_xls
(
list_data
,
"回款数据.xlsx"
,
"Remittance payments"
)
print
(
f
"共计:{len(list_data)} 订单"
)
logger
.
logger
()
.
info
(
f
"共计:{len(list_data)} 订单"
)
all_normal_pay_data
=
[]
all_price_pay_data
=
[]
...
...
@@ -272,7 +259,7 @@ def main():
# 获取当前订单的Payee和优惠比例
vendor_payment_terms
=
get_po_code
(
i
,
invoice_number
[:
8
])
print
(
vendor_payment_terms
)
logger
.
logger
()
.
info
(
vendor_payment_terms
)
vendor
=
vendor_payment_terms
[
'vendor'
]
deduction_points
=
int
(
vendor_payment_terms
[
'payment_terms'
])
...
...
@@ -334,4 +321,4 @@ if __name__ == '__main__':
except
KeyboardInterrupt
:
pass
except
Exception
as
e
:
print
(
e
)
logger
.
logger
()
.
error
(
e
)
src/logger/logger.py
0 → 100644
View file @
acaed936
# coding: utf-8
import
logging
class
ColoredFormatter
(
logging
.
Formatter
):
def
format
(
self
,
record
):
# 为不同的日志级别定义一些颜色
colors
=
{
'DEBUG'
:
'
\033
[94m'
,
# blue
'INFO'
:
'
\033
[92m'
,
# green
'WARNING'
:
'
\033
[93m'
,
# yellow
'ERROR'
:
'
\033
[91m'
,
# red
'CRITICAL'
:
'
\033
[95m'
# magenta
}
# 从记录中获取原始消息
message
=
super
()
.
format
(
record
)
# 如果日志级别定义了颜色,则添加颜色代码
if
record
.
levelname
in
colors
:
color_code
=
colors
[
record
.
levelname
]
message
=
f
"{color_code}{message}
\033
[0m"
return
message
class
ConsoleLog
:
def
__init__
(
self
):
self
.
logger
=
logging
.
getLogger
(
__name__
)
self
.
logger
.
setLevel
(
logging
.
DEBUG
)
# 使用彩色格式化程序创建控制台处理程序
console_handler
=
logging
.
StreamHandler
()
console_handler
.
setFormatter
(
ColoredFormatter
(
'
%(asctime)
s
%(message)
s'
))
# 将控制台处理程序添加到记录器
self
.
logger
.
addHandler
(
console_handler
)
def
info
(
self
,
arg
):
self
.
logger
.
info
(
arg
)
def
debug
(
self
,
arg
):
self
.
logger
.
debug
(
arg
)
def
warning
(
self
,
arg
):
self
.
logger
.
warning
(
arg
)
def
error
(
self
,
arg
):
self
.
logger
.
error
(
arg
)
def
critical
(
self
,
arg
):
self
.
logger
.
critical
(
arg
)
\ No newline at end of file
src/returns.py
View file @
acaed936
# coding: utf-8
# 导出退款记录
import
os
import
time
import
pandas
as
pd
from
DrissionPage
import
ChromiumPage
from
DrissionPage.errors
import
ElementNotFoundError
from
lxml
import
etree
from
helper
import
helper
,
excel
,
file
,
domain
from
helper
import
helper
,
excel
,
file
,
domain
,
logger
country
=
None
...
...
@@ -69,7 +67,7 @@ def export_item_read_data(return_id):
file
.
wait_for_downloads
(
file_name
)
break
except
ElementNotFoundError
:
print
(
"元素未找到,刷新网页"
)
logger
.
logger
()
.
warning
(
"元素未找到,刷新网页"
)
page
.
refresh
()
# 读取回退商品详情
...
...
@@ -82,14 +80,14 @@ def main():
# 下载并读取list数据
list_data
=
export_list_read_data
()
print
(
f
"共计:{len(list_data)} 订单"
)
logger
.
logger
()
.
info
(
f
"共计:{len(list_data)} 订单"
)
new_list_data
=
[]
i
=
0
for
_
,
data
in
list_data
.
iterrows
():
i
+=
1
return_id
=
data
.
get
(
'Return ID'
)
print
({
"index"
:
i
,
"return_id"
:
return_id
})
logger
.
logger
()
.
info
({
"index"
:
i
,
"return_id"
:
return_id
})
# 下载退货详情表格读取数据
item_data
=
export_item_read_data
(
return_id
)
...
...
@@ -127,4 +125,4 @@ if __name__ == '__main__':
except
KeyboardInterrupt
:
pass
except
Exception
as
e
:
print
(
e
)
logger
.
logger
()
.
error
(
e
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment