Commit 5b4538c9 authored by 邱阿朋's avatar 邱阿朋

修复报错

parent acaed936
......@@ -3,3 +3,4 @@ DrissionPage==4.1.0.2
xlrd==2.0.1
pandas==2.2.3
openpyxl==3.1.5
chardet==5.2.0
\ No newline at end of file
......@@ -3,7 +3,6 @@
import math
import os
import shutil
import time
from urllib.parse import urlparse, parse_qs
import pandas as pd
......@@ -14,6 +13,7 @@ from lxml import etree
from helper import helper, excel, file, domain, logger
country = None
log = logger.ConsoleLog()
page = ChromiumPage()
page.set.load_mode.normal()
......@@ -70,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 == "":
logger.logger().warning("表单内容为空,刷新网页")
log.warning("表单内容为空,刷新网页")
page.refresh()
continue
return report_table_html
except ElementNotFoundError:
logger.logger().warning("元素未找到,刷新网页")
log.warning("元素未找到,刷新网页")
page.refresh()
......@@ -125,7 +125,7 @@ def export_item_read_data(invoice_id):
def main():
relation_data = sku_relations() # 获取 ASIN 与 SKU 的对应关系数据
coop_list = export_list_read_data() # 获取合作数据列表
logger.logger().info(f"共计:{len(coop_list)} 条数据")
log.info(f"共计:{len(coop_list)} 条数据")
i = 0
new_coop_data = []
......@@ -133,13 +133,13 @@ def main():
for _, coop in coop_list.iterrows():
i += 1
invoice_id = coop.get("Invoice ID") # 获取发票 ID
logger.logger().info({"index": i, "invoice_id": invoice_id})
log.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:
logger.logger().warning(f"{invoice_id} 暂无报告信息")
log.warning(f"{invoice_id} 暂无报告信息")
continue
for _, item in item_list.iterrows():
......@@ -215,4 +215,4 @@ if __name__ == '__main__':
except KeyboardInterrupt:
pass
except Exception as e:
logger.logger().error(e)
log.error(e)
# coding: utf-8
import os
import logging
from src.logger.logger import ConsoleLog
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
console_log = ConsoleLog()
class ConsoleLog:
_instance = None
def logger() -> ConsoleLog:
return console_log
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(ConsoleLog, cls).__new__(cls)
cls._instance._initialize()
return cls._instance
def _initialize(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
......@@ -2,7 +2,6 @@
# 回款明细
import os
import re
import time
import urllib.parse
import warnings
......@@ -11,10 +10,12 @@ from DrissionPage import ChromiumPage
from DrissionPage.errors import ElementNotFoundError
from lxml import etree
from helper import helper, excel, file, domain,logger
from helper import helper, excel, file, domain, logger
country = None
log = logger.ConsoleLog()
page = ChromiumPage()
page.set.load_mode.normal()
page.set.when_download_file_exists('overwrite')
......@@ -28,11 +29,13 @@ page.set.download_path(download_path)
# 忽略 openpyxl 样式警告
warnings.filterwarnings("ignore", category=UserWarning, module="openpyxl")
def page_get(url):
host = domain.switch_domain(country)
full_url = host + url
page.get(full_url, timeout=3)
def export_list_read_data():
new_file_name = 'new_Payments.xlsx'
if os.path.isfile(new_file_name):
......@@ -97,7 +100,7 @@ def export_details_read_data(invoice_number):
excel.remove_last_comma(file_name)
break
except ElementNotFoundError:
logger.logger().warning("导出按钮不存在刷新网页")
log.warning("导出按钮不存在刷新网页")
page.refresh()
return pd.read_csv(file_name)
......@@ -186,13 +189,13 @@ def click_get_price_data():
while True:
try:
page.ele("#pd", timeout=5).click()
logger.logger().debug("等待争议数据加载,5秒后获取表单数据")
log.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:
logger.logger().warning("未获取到表数据")
log.warning("未获取到表数据")
break
return []
......@@ -248,7 +251,7 @@ def main():
list_data = export_list_read_data()
excel.save_xls(list_data, "回款数据.xlsx", "Remittance payments")
logger.logger().info(f"共计:{len(list_data)} 订单")
log.info(f"共计:{len(list_data)} 订单")
all_normal_pay_data = []
all_price_pay_data = []
......@@ -259,7 +262,7 @@ def main():
# 获取当前订单的Payee和优惠比例
vendor_payment_terms = get_po_code(i, invoice_number[:8])
logger.logger().info(vendor_payment_terms)
log.info(vendor_payment_terms)
vendor = vendor_payment_terms['vendor']
deduction_points = int(vendor_payment_terms['payment_terms'])
......@@ -321,4 +324,4 @@ if __name__ == '__main__':
except KeyboardInterrupt:
pass
except Exception as e:
logger.logger().error(e)
log.error(e)
# 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
......@@ -6,9 +6,10 @@ import pandas as pd
from DrissionPage import ChromiumPage
from DrissionPage.errors import ElementNotFoundError
from helper import helper, excel, file, domain,logger
from helper import helper, excel, file, domain, logger
country = None
log = logger.ConsoleLog()
page = ChromiumPage()
page.set.load_mode.normal()
......@@ -67,7 +68,7 @@ def export_item_read_data(return_id):
file.wait_for_downloads(file_name)
break
except ElementNotFoundError:
logger.logger().warning("元素未找到,刷新网页")
log.warning("元素未找到,刷新网页")
page.refresh()
# 读取回退商品详情
......@@ -80,14 +81,14 @@ def main():
# 下载并读取list数据
list_data = export_list_read_data()
logger.logger().info(f"共计:{len(list_data)} 订单")
log.info(f"共计:{len(list_data)} 订单")
new_list_data = []
i = 0
for _, data in list_data.iterrows():
i += 1
return_id = data.get('Return ID')
logger.logger().info({"index": i, "return_id": return_id})
log.info({"index": i, "return_id": return_id})
# 下载退货详情表格读取数据
item_data = export_item_read_data(return_id)
......@@ -125,4 +126,4 @@ if __name__ == '__main__':
except KeyboardInterrupt:
pass
except Exception as e:
logger.logger().error(e)
log.error(e)
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