This commit is contained in:
HuangHai
2026-01-14 13:32:32 +08:00
parent a83375e295
commit f4d3dada58
5 changed files with 39 additions and 24 deletions

View File

@@ -4,6 +4,8 @@
SCROLL_DISTANCE_RATIO = 0.5 SCROLL_DISTANCE_RATIO = 0.5
# 最大采集场站数量,达到此次数后停止采集 # 最大采集场站数量,达到此次数后停止采集
MAX_STATIONS_COUNT = 100 MAX_STATIONS_COUNT = 100
FIRST_RUN_ONLY_ONE_STATION = False
FIRST_RUN_ONLY_ONE_STATION = False
# 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页 # 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页
REDIS_STATION_EXPIRE = 120 REDIS_STATION_EXPIRE = 120
# 数据库数据保留时长(天),超过此时长的历史数据(is_current=0)将被删除 # 数据库数据保留时长(天),超过此时长的历史数据(is_current=0)将被删除

View File

@@ -26,7 +26,8 @@ from Apps.AiTeJiYiChong.Config.Setting import (
WAIT_AFTER_SCROLL, WAIT_AFTER_SCROLL,
SAFE_EXCLUDE_RATIO, SAFE_EXCLUDE_RATIO,
BOTTOM_SAFE_EXCLUDE_RATIO, BOTTOM_SAFE_EXCLUDE_RATIO,
TEST_CLEAR_REDIS TEST_CLEAR_REDIS,
FIRST_RUN_ONLY_ONE_STATION
) )
logger = logging.getLogger("AiTeJiYiChongCrawler") logger = logging.getLogger("AiTeJiYiChongCrawler")
@@ -289,6 +290,10 @@ async def get_station_list(d, service, max_stations_count=MAX_STATIONS_COUNT):
full_name_key = f"crawled:aite:{Kit.clean_station_name(station_name)}" full_name_key = f"crawled:aite:{Kit.clean_station_name(station_name)}"
await redis_kit.set_data(full_name_key, "1", expire=REDIS_STATION_EXPIRE) await redis_kit.set_data(full_name_key, "1", expire=REDIS_STATION_EXPIRE)
if FIRST_RUN_ONLY_ONE_STATION:
logger.info("已完成首个场站的全流程采集,根据配置退出艾特吉易充爬取任务。")
break
# 如果内层循环已达上限,外层循环也应退出,避免不必要的滑动 # 如果内层循环已达上限,外层循环也应退出,避免不必要的滑动
if total_encountered_count >= max_stations_count: if total_encountered_count >= max_stations_count:
break break

View File

@@ -5,6 +5,7 @@
SCROLL_DISTANCE_RATIO = 0.5 SCROLL_DISTANCE_RATIO = 0.5
# 最大采集场站数量,达到此次数后停止采集 # 最大采集场站数量,达到此次数后停止采集
MAX_STATIONS_COUNT = 100 MAX_STATIONS_COUNT = 100
FIRST_RUN_ONLY_ONE_STATION = False
# 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页 # 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页
REDIS_STATION_EXPIRE = 120 REDIS_STATION_EXPIRE = 120

View File

@@ -4,6 +4,7 @@
SCROLL_DISTANCE_RATIO = 0.5 SCROLL_DISTANCE_RATIO = 0.5
# 最大采集场站数量,达到此次数后停止采集 # 最大采集场站数量,达到此次数后停止采集
MAX_STATIONS_COUNT = 100 MAX_STATIONS_COUNT = 100
FIRST_RUN_ONLY_ONE_STATION = False
# 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页 # 场站去重过期时间(秒),在此时间内重复出现的场站不会再次点击进入详情页
REDIS_STATION_EXPIRE = 120 REDIS_STATION_EXPIRE = 120
# 数据库数据保留时长(天),超过此时长的历史数据(is_current=0)将被删除 # 数据库数据保留时长(天),超过此时长的历史数据(is_current=0)将被删除
@@ -36,3 +37,4 @@ BOTTOM_SAFE_EXCLUDE_RATIO = 0.10
FALLBACK_WIDTH = 1080 FALLBACK_WIDTH = 1080
# 默认回退屏幕高度,当无法自动获取设备信息时使用 # 默认回退屏幕高度,当无法自动获取设备信息时使用
FALLBACK_HEIGHT = 2400 FALLBACK_HEIGHT = 2400
FIRST_RUN_ONLY_ONE_STATION = False

View File

@@ -12,7 +12,8 @@ from Apps.YeLiTe.Service import YiLaiTeService
from Apps.YeLiTe.Config.Setting import ( from Apps.YeLiTe.Config.Setting import (
SCROLL_DISTANCE_RATIO, WAIT_AFTER_SCROLL, MAX_STATIONS_COUNT, SCROLL_DISTANCE_RATIO, WAIT_AFTER_SCROLL, MAX_STATIONS_COUNT,
WAIT_DETAIL_PAGE_LOAD, WAIT_BACK_TO_LIST, TEST_CLEAR_REDIS, WAIT_DETAIL_PAGE_LOAD, WAIT_BACK_TO_LIST, TEST_CLEAR_REDIS,
SAFE_EXCLUDE_RATIO, BOTTOM_SAFE_EXCLUDE_RATIO SAFE_EXCLUDE_RATIO, BOTTOM_SAFE_EXCLUDE_RATIO,
FIRST_RUN_ONLY_ONE_STATION
) )
from Util.RedisKit import RedisKit from Util.RedisKit import RedisKit
from Core.BaseCrawler import BaseCrawler from Core.BaseCrawler import BaseCrawler
@@ -238,6 +239,10 @@ class YiLaiTeCrawler(BaseCrawler):
logger.info("似乎还在二级页面,尝试再次返回...") logger.info("似乎还在二级页面,尝试再次返回...")
d.press("back") d.press("back")
await asyncio.sleep(WAIT_BACK_TO_LIST) await asyncio.sleep(WAIT_BACK_TO_LIST)
if FIRST_RUN_ONLY_ONE_STATION:
logger.info("已完成首个场站的全流程采集,根据配置退出驿来特爬取任务。")
return processed_count
else: else:
logger.warning(f"点击场站 {name} 后页面似乎未跳转,跳过返回操作") logger.warning(f"点击场站 {name} 后页面似乎未跳转,跳过返回操作")
if os.path.exists(detail_shot): os.remove(detail_shot) if os.path.exists(detail_shot): os.remove(detail_shot)