This commit is contained in:
HuangHai
2026-01-15 09:51:16 +08:00
parent fe27bc6884
commit 98e890a693
8 changed files with 3 additions and 449 deletions

View File

@@ -7,7 +7,7 @@ import json
import cv2
from Apps.TeLaiDian.Kit import (
take_screenshot, get_image_content_md5, clean_station_name,
setup_logger, detect_price_click_point_cv, read_image, save_image
setup_logger, read_image, save_image
)
from Apps.TeLaiDian.ReadImageKit import ReadImageKit
from Apps.TeLaiDian.Service import TeLaiDianService
@@ -29,11 +29,6 @@ if project_root not in sys.path:
# 初始化日志
logger = setup_logger("TeLaiDianCrawler")
PRICE_TAB_X_NORM = 220
PRICE_TAB_Y_NORM = 130
PRICE_ENTRY_X_NORM = 230
PRICE_ENTRY_Y_NORM = 380
class TeLaiDianCrawler(BaseCrawler):
def __init__(self, service=None):
super().__init__(service or TeLaiDianService())
@@ -241,7 +236,7 @@ class TeLaiDianCrawler(BaseCrawler):
await self.crawl_detail_logic(d, station)
# 标记为已处理
await self.redis_kit.set_data(redis_key, "1", ex=REDIS_STATION_EXPIRE)
await self.redis_kit.set_data(redis_key, "1", expire=REDIS_STATION_EXPIRE)
d.press("back")
await asyncio.sleep(WAIT_BACK_TO_LIST)
@@ -358,24 +353,6 @@ class TeLaiDianCrawler(BaseCrawler):
price_tab_screen = found_entry["screen"]
p = found_entry["point"]
# 1. 先点击顶部“价格”标签 (确保切到价格页,虽然滚动前可能已经点击,但这里做双保险)
# 先 OCR 找一次标签
tab_data = await self.read_image_kit.find_price_tab_ocr(price_tab_screen)
tab_x, tab_y = None, None
if tab_data.get("found"):
p_tab = tab_data["point"]
tab_x, tab_y = int(p_tab[0] * w / 1000), int(p_tab[1] * h / 1000)
logger.info(f"[详情页] 点击顶部价格标签: ({tab_x}, {tab_y})")
d.click(tab_x, tab_y)
await asyncio.sleep(1.0)
else:
# 按照用户要求:找不到文字时输出日志、截图并停止程序
fail_screen = take_screenshot(d, f"tld_ocr_tab_fail_{int(time.time())}.jpg")
logger.error(f"❌ [OCR失败] 在页面中未找到‘价格’标签文字!")
logger.error(f"❌ [OCR失败] 最终截图已保存至: {fail_screen}")
logger.error("❌ [OCR失败] 程序将停止运行,请检查页面内容或识别逻辑。")
sys.exit(1)
# 2. 点击“全部时段”入口
entry_x = int(p[0] * w / 1000)
entry_y = int(p[1] * h / 1000)