[BLOCKED #2000] feat(tradein/domclick): Layer B detail-backfill + local runner + JSONL ingest #2005

Closed
lekss361 wants to merge 8 commits from feat/tradein-domclick-detail-backfill into main
Showing only changes of commit 3cc015c249 - Show all commits

View file

@ -770,7 +770,15 @@ async def fetch_serp_page(
DomClickBlockedError: 403 или QRATOR-маркеры в title.
"""
resp = await page.goto(url, wait_until="domcontentloaded", timeout=70000)
await asyncio.sleep(random.uniform(*render_wait)) # дать SSR отрендериться
# SERP рендерит карточки клиентской гидрацией через ~6-12с после domcontentloaded.
# Фиксированный sleep хрупок: при медленном ответе DOM ещё пуст → 0 ids (silent
# 0-coverage). Ждём появления card-ссылок ЯВНО; genuinely-пустой ценовой band →
# timeout → 0 offers (корректно). render_wait остаётся коротким settle поверх.
try:
await page.wait_for_selector("a[href*='/card/']", timeout=12000)
except Exception:
pass # пустой band или медленный рендер — читаем как есть (0 offers)
await asyncio.sleep(random.uniform(*render_wait)) # settle: дорисовать все 20 + title
status = resp.status if resp else 0
title = ""
try: