[tradein][scrapers] avito pipeline: новостройки house-страница (housePage widget missing) + AvitoBlockedError крашит весь прогон #1820

Closed
opened 2026-06-20 06:38:58 +00:00 by lekss361 · 0 comments
Owner

Найдено при verification-прогоне run_avito_pipeline (2026-06-20, browser-mode). Основной поток собирает корректно (SERP 58 лотов, detail 3/3, поля верны), но 2 пробела:

1. Новостройки house-страница — housePage виджет не найден

house(detail) /catalog/novostroyki/ekaterinburg/semeynyy_kvartal_beregovoy/12879380: Виджет 'housePage' не найден в placeholders. У новостроек (/catalog/novostroyki/...) структура house-страницы отличается от вторички (/catalog/houses/...); фикс #1789 (_widget_payload) был для вторичных. → houses_failed для новостроек.
Фикс: в avito_houses.py — обработать новостроечный house-layout (другой набор виджетов) ИЛИ детектить новостройку по URL (/catalog/novostroyki/) и парсить её специфично / грейсфул-скип без error.

2. AvitoBlockedError пропагейтит и крашит весь pipeline

Полный прогон (enrich_detail_top_n=10) упал с exit 1 — AvitoBlockedError/AvitoRateLimitedError из одного house/detail-фетча пробрасывается наружу run_avito_pipeline (docstring: "propagate наружу") → весь прогон падает, теряя уже собранное. Меньший прогон (top-3) ловил house-ошибки в counters и не падал.
Фикс: в run_avito_pipeline enrichment-loop ловить AvitoBlockedError per-item (как обычные ошибки → counters.errors + abort-threshold consecutive_blocks), не пробрасывать наружу на единичном блоке. Сохранить уже собранные listings.

Усилие

M. Не блокер (вторичка + detail работают), но новостройки-дома не обогащаются + риск потери прогона на блоке.

Файлы: avito_houses.py, scrape_pipeline.py (run_avito_pipeline). Cross-ref #1789. Verification: run_avito_pipeline(56.838,60.597,1500,enrich_houses=True,top_n=10).

Найдено при verification-прогоне `run_avito_pipeline` (2026-06-20, browser-mode). Основной поток собирает корректно (SERP 58 лотов, detail 3/3, поля верны), но 2 пробела: ## 1. Новостройки house-страница — `housePage` виджет не найден `house(detail) /catalog/novostroyki/ekaterinburg/semeynyy_kvartal_beregovoy/12879380: Виджет 'housePage' не найден в placeholders`. У **новостроек** (`/catalog/novostroyki/...`) структура house-страницы отличается от вторички (`/catalog/houses/...`); фикс #1789 (`_widget_payload`) был для вторичных. → houses_failed для новостроек. **Фикс:** в `avito_houses.py` — обработать новостроечный house-layout (другой набор виджетов) ИЛИ детектить новостройку по URL (`/catalog/novostroyki/`) и парсить её специфично / грейсфул-скип без error. ## 2. AvitoBlockedError пропагейтит и крашит весь pipeline Полный прогон (`enrich_detail_top_n=10`) упал с exit 1 — `AvitoBlockedError`/`AvitoRateLimitedError` из одного house/detail-фетча пробрасывается наружу `run_avito_pipeline` (docstring: "propagate наружу") → весь прогон падает, теряя уже собранное. Меньший прогон (top-3) ловил house-ошибки в counters и не падал. **Фикс:** в `run_avito_pipeline` enrichment-loop ловить `AvitoBlockedError` per-item (как обычные ошибки → counters.errors + abort-threshold consecutive_blocks), не пробрасывать наружу на единичном блоке. Сохранить уже собранные listings. ## Усилие M. Не блокер (вторичка + detail работают), но новостройки-дома не обогащаются + риск потери прогона на блоке. **Файлы:** `avito_houses.py`, `scrape_pipeline.py` (`run_avito_pipeline`). Cross-ref #1789. Verification: `run_avito_pipeline(56.838,60.597,1500,enrich_houses=True,top_n=10)`.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#1820
No description provided.