cf逻辑复用

This commit is contained in:
2026-06-09 09:48:46 +08:00
parent a517e8c442
commit caa3e4342a
2 changed files with 68 additions and 30 deletions
+3 -30
View File
@@ -91,21 +91,7 @@ class SurugayaClient:
logger.debug("开始抓取搜索页:payload=%s", json.dumps(payload.model_dump(), ensure_ascii=False))
url = str(payload.search_url) if payload.search_url else self._build_search_url(payload)
session = await self._session_manager.get_verified_session(url)
if session.html is not None:
# 新创建的会话已携带页面 HTML,直接使用,避免二次加载
html = session.html
else:
async with self._browser_pool.page_session(storage_state=session.storage_state) as (_, page):
response = await page.goto(
url,
wait_until="domcontentloaded",
timeout=int(self._settings.request_timeout_seconds * 1000),
)
status = response.status if response is not None else None
if status != 200:
await self._raise_upstream_error(page=page, response=response, url=url)
html = await page.content()
html, session = await self._session_manager.fetch_html(url)
tree = HTMLParser(html)
@@ -165,21 +151,8 @@ class SurugayaClient:
logger.info("开始抓取详情页:goods_id=%s", goods_id)
logger.debug("详情页URL:url=%s", url)
# 抓取页面 HTML
session = await self._session_manager.get_verified_session(url)
if session.html is not None:
html = session.html
else:
async with self._browser_pool.page_session(storage_state=session.storage_state) as (_, page):
response = await page.goto(
url,
wait_until="domcontentloaded",
timeout=int(self._settings.request_timeout_seconds * 1000),
)
status = response.status if response is not None else None
if status != 200:
await self._raise_upstream_error(page=page, response=response, url=url)
html = await page.content()
# 抓取页面 HTML(会话复用失败时由 fetch_html 内部自动重建,避免成功/失败交替)
html, _ = await self._session_manager.fetch_html(url)
tree = HTMLParser(html)