fix(tradein/cian): 403 снимает узел с выдачи, а не гаснет в return None (#2700) #2821
1 changed files with 8 additions and 1 deletions
|
|
@ -1904,9 +1904,16 @@ async def scrape_cian_detail(
|
||||||
Without it → debug-only (no DB write).
|
Without it → debug-only (no DB write).
|
||||||
"""
|
"""
|
||||||
_assert_allowed_url(offer_url)
|
_assert_allowed_url(offer_url)
|
||||||
|
from scraper_kit.cian_exceptions import CianBlockedError
|
||||||
from scraper_kit.providers.cian.detail import fetch_detail, save_detail_enrichment
|
from scraper_kit.providers.cian.detail import fetch_detail, save_detail_enrichment
|
||||||
|
|
||||||
enrichment = await fetch_detail(offer_url, config=RealScraperConfig())
|
try:
|
||||||
|
enrichment = await fetch_detail(offer_url, config=RealScraperConfig())
|
||||||
|
except CianBlockedError as exc:
|
||||||
|
# #2700: 403 теперь исключение (узел снимается с выдачи Циану). Ad-hoc ручке
|
||||||
|
# нужен внятный ответ, а не 500: «страницу не разобрали» и «нас не пустили с
|
||||||
|
# этого узла» — разные новости для того, кто дёргает ручку руками.
|
||||||
|
raise HTTPException(502, f"Cian заблокировал наш узел: {exc}") from exc
|
||||||
if enrichment is None:
|
if enrichment is None:
|
||||||
raise HTTPException(404, f"Could not parse Cian detail page: {offer_url}")
|
raise HTTPException(404, f"Could not parse Cian detail page: {offer_url}")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue