gendesign/tradein-mvp/backend/app/services/scrapers
lekss361 f9e0b6bcbe feat(tradein): yandex_detail.py — Product JSON-LD + DOM detail parser
Stage 4 of YandexRealtyScraper v1 (Wave 4 / Worker A — parallel with
yandex_newbuilding.py and yandex_valuation.py).

Module: app/services/scrapers/yandex_detail.py
- YandexDetailScraper(BaseScraper) — async fetch_detail(offer_url)
- DetailEnrichment Pydantic model (offer_id, price/title/rooms/area/floor,
  description, sale_type, views, publish_date, agency block, metro stations,
  photos 8 sizes, newbuilding linkage, NLP best-effort fields)
- Helpers: _find_section_text(h2/h3 -> next siblings), _parse_metro_stations,
  _extract_relative_date, _extract_seller_name, _parse_title

Price source: Product JSON-LD offers.price (exact int) — falls back to None
if missing. Photos: 8 sizes from Product.image[] array.
NLP: parse_house_type / RE_YEAR / RE_METRO_WALK from description text
(best-effort — None when not present).

Tests: 35 unit tests against hand-crafted fixture HTML. All pass. Ruff clean.
2026-05-23 16:38:02 +03:00
..
__init__.py feat: add tradein-mvp subproject (Trade-In Estimator под /trade-in) 2026-05-21 00:25:39 +03:00
avito.py refactor(tradein): avito search — remove jitter (C-5) + mobile API dead code + parse houseLinks (#441) 2026-05-23 11:55:18 +00:00
avito_detail.py feat(tradein): avito_detail.py — detail page parser (30+ fields incl. domoteka) (#443) 2026-05-23 12:17:15 +00:00
avito_houses.py feat(tradein): avito_houses.py — Houses Catalog parser (state + reviews + history + recs) (#449) 2026-05-23 12:37:24 +00:00
avito_imv.py feat(tradein): avito_imv.py — Avito IMV evaluation API client (2 requests) (#444) 2026-05-23 12:16:47 +00:00
base.py feat(tradein): extend base.py save_listings to persist Cian-specific columns (PR #450 follow-up) (#455) 2026-05-23 13:05:20 +00:00
cian.py feat(tradein): cian.py SERP refactor — state-based extraction (137 fields, no jitter) (#450) 2026-05-23 12:52:04 +00:00
cian_detail.py feat(tradein): cian_session cookies management + admin endpoints (Wave 4 Worker A) (#457) 2026-05-23 13:22:00 +00:00
cian_newbuilding.py feat(tradein): cian_newbuilding.py — ЖК catalog scraper (chart + reliability + offers, Wave 4 Worker C) (#459) 2026-05-23 13:23:11 +00:00
cian_state_parser.py feat(tradein): cian_state_parser shared utility + ScrapedLot Cian fields (#447) 2026-05-23 12:35:01 +00:00
n1.py feat(tradein): пагинация Циан/N1 3→8 страниц — плотность данных 2026-05-21 14:34:29 +03:00
yandex_detail.py feat(tradein): yandex_detail.py — Product JSON-LD + DOM detail parser 2026-05-23 16:38:02 +03:00
yandex_helpers.py feat(tradein): yandex_helpers.py — JSON-LD + regex + date + NLP + money helpers (#456) 2026-05-23 13:14:11 +00:00
yandex_realty.py feat(tradein): yandex_realty.py — DOM SERP refactor (vtorichka, 23 cards/page) 2026-05-23 16:21:47 +03:00