fix(tradein/domclick-local): SERP enumerate — wait_for_selector вместо слепого render-wait
Карточки SERP появляются клиентской гидрацией через ~6-12с после domcontentloaded. Фиксированный render-sleep ловил пустой DOM при медленном ответе → enumerate молча собирал 0 ids (silent 0-coverage; всплыло при ускоренном профиле render 3-5). Теперь fetch_serp_page ждёт 'a[href*=/card/]' явно (timeout 12с) → пустой ценовой band корректно даёт 0 по таймауту, render_wait остаётся коротким settle. Подтверждено enumerate-only --limit 5 с render 3-5.
This commit is contained in:
parent
9b1f064069
commit
3cc015c249
1 changed files with 9 additions and 1 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue