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

修复报错

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