fix(scrapers): avito pipeline — новостройки house graceful + AvitoBlockedError per-item не крашит прогон (#1820) #1822

Merged
lekss361 merged 1 commit from fix/avito-pipeline-novostroyki-blocks into main 2026-06-20 06:57:56 +00:00
Owner

Closes #1820. Найдено при verification-прогоне (browser-mode).

Фикс 1 — новостройки house-страница (avito_houses.py)

Новостройки /catalog/novostroyki/... не имеют виджета housePage (другая структура: developmentPage flat-widget, характеристики в aboutDevelopment.tabs[*].expandParams). Раньше → ValueError → houses_failed-краш.
Фикс: _parse_development_page() + _parse_development_or_skip() — есть developmentPage → partial parse (ext_id/адрес/coords/тип/лифты/застройщик); нет, но URL-новостройка → graceful warning + минимальный HouseInfo (без ValueError); вторичка без housePage → по-прежнему ValueError (регрессия шейпа). Фикстура парсится: type=monolith, лифты 42/60, developer=Талан.

Фикс 2 — AvitoBlockedError per-item (scrape_pipeline.py)

3 enrichment-цикла (houses/detail/house-from-detail) ловят AvitoBlockedError/AvitoRateLimitedError пер-item (counters, не raise). Общий enrich_consecutive_blocks, порог 3 подряд → abort enrichment + вернуть PipelineResult с собранным (не краш). SEARCH-фаза по-прежнему propagate (без листингов прогон бессмыслен). Listings всегда сохранены.

Тесты

388 passed (avito-сабсет). +6 тестов (3 houses новостройка + 3 pipeline block-handling). 2 fail/7 err = pre-existing psycopg2-env (подтверждено на main, не регрессия).

На ревью

  • Вторичка без housePage всё ещё ValueError (намеренно — детект регрессии шейпа); новостройка — graceful. Проверить детект (URL /catalog/novostroyki/).
  • Порог 3 consecutive blocks — abort enrichment, не весь pipeline.
Closes #1820. Найдено при verification-прогоне (browser-mode). ## Фикс 1 — новостройки house-страница (avito_houses.py) Новостройки `/catalog/novostroyki/...` не имеют виджета `housePage` (другая структура: `developmentPage` flat-widget, характеристики в `aboutDevelopment.tabs[*].expandParams`). Раньше → ValueError → houses_failed-краш. Фикс: `_parse_development_page()` + `_parse_development_or_skip()` — есть developmentPage → partial parse (ext_id/адрес/coords/тип/лифты/застройщик); нет, но URL-новостройка → graceful warning + минимальный HouseInfo (без ValueError); вторичка без housePage → по-прежнему ValueError (регрессия шейпа). Фикстура парсится: type=monolith, лифты 42/60, developer=Талан. ## Фикс 2 — AvitoBlockedError per-item (scrape_pipeline.py) 3 enrichment-цикла (houses/detail/house-from-detail) ловят `AvitoBlockedError`/`AvitoRateLimitedError` пер-item (counters, не raise). Общий `enrich_consecutive_blocks`, порог 3 подряд → abort enrichment + вернуть PipelineResult с собранным (не краш). SEARCH-фаза по-прежнему propagate (без листингов прогон бессмыслен). Listings всегда сохранены. ## Тесты 388 passed (avito-сабсет). +6 тестов (3 houses новостройка + 3 pipeline block-handling). 2 fail/7 err = pre-existing psycopg2-env (подтверждено на main, не регрессия). ## На ревью - Вторичка без housePage всё ещё ValueError (намеренно — детект регрессии шейпа); новостройка — graceful. Проверить детект (URL `/catalog/novostroyki/`). - Порог 3 consecutive blocks — abort enrichment, не весь pipeline.
lekss361 added 1 commit 2026-06-20 06:55:36 +00:00
fix(scrapers): avito pipeline — новостройки house graceful (без housePage), AvitoBlockedError per-item не крашит прогон (#1820)
All checks were successful
CI / changes (pull_request) Successful in 7s
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
cd91d5e279
lekss361 merged commit 7639dfe5fd into main 2026-06-20 06:57:56 +00:00
lekss361 deleted branch fix/avito-pipeline-novostroyki-blocks 2026-06-20 06:57:56 +00:00
Sign in to join this conversation.
No reviewers
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#1822
No description provided.