Commit a9b532d4 authored by 邱阿朋's avatar 邱阿朋

fix(advert_cost): 修复日期解析逻辑以支持多种日期格式

- 新增静态方法 __parse_date 以处理不同格式的日期字符串解析
- 统一日期字符串转换为时间戳,简化原有冗余代码
- 修复按钮文本日期提取,避免因格式不同导致解析失败
- 优化了模块导入顺序,提升代码可读性和维护性
parent 12889b6f
# coding: utf-8
import re
import time
from datetime import datetime
import pandas as pd
from DrissionPage import ChromiumPage as Page
from lxml import etree
from app.vc import rabbit
from app.helper import domain, file
from app.logger.logger import Logger
from app.vc import rabbit
from app.vc.interface import AutoInterface
from DrissionPage import ChromiumPage as Page
from datetime import datetime, timedelta
class AdvertCost(AutoInterface):
......@@ -121,6 +121,29 @@ class AdvertCost(AutoInterface):
self.logger.debug("分页按钮已禁用,停止翻页")
break
@staticmethod
def __parse_date(text:str):
# 匹配两种格式的通用模式
match = re.search(r'Date range:\s*(\w+)\s+(\w+),?\s*(\d{4})', text)
if not match:
raise ValueError("无法解析日期")
part1, part2, year = match.groups()
# 判断哪个是月份(包含字母的是月份)
if part1.isdigit():
# 格式: "3 Dec 2025"
day, month_str = part1, part2
date_str = f"{day} {month_str} {year}"
fmt = "%d %b %Y"
else:
# 格式: "Jan 15, 2024"
month_str, day = part1, part2
date_str = f"{month_str} {day}, {year}"
fmt = "%b %d, %Y"
return int(datetime.strptime(date_str, fmt).timestamp())
def run(self, file_name: str):
self.__page_get("hz/vendor/members/advertising/home?ref_=vc_xx_subNav")
# wrapper_html = self.page.ele(". columns-wrapper a20m-columns-wrapper", timeout=5).html
......@@ -174,16 +197,10 @@ class AdvertCost(AutoInterface):
# 找到按钮元素
btn = self.page.ele('#products_view:products_view:dateRangeFilter:openContainer')
text = btn.text
# 提取日期字符串
match = re.search(r'Date range:\s*([A-Za-z]+)\s+(\d{1,2}),\s*(\d{4})', text)
if not match:
raise ValueError("无法解析日期")
month_str, day, year = match.groups()
date_str = f"{month_str} {day}, {year}"
# 获取按钮的文本
timestamp = self.__parse_date(btn.text)
# 解析成 datetime转换成时间戳
self.select_day = int(datetime.strptime(date_str, "%b %d, %Y").timestamp())
self.select_day = timestamp
# 点击分页按钮
self.__click_button()
......
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