Compare commits

..

No commits in common. "0f95a15c8e15654e17972519e3ddc718963fc3bd" and "483fdb0caa76947cfae6f033bc53c61816f1c216" have entirely different histories.

2 changed files with 8 additions and 13 deletions

View file

@ -1,12 +1,12 @@
"""Cian.ru newbuilding (ЖК) catalog page scraper.
URL: https://zhk-<slug>-<city>-i.cian.ru/
MFE: 'newbuilding-card-desktop-frontend', key: 'initialState'
MFE: 'newbuilding-card-desktop-fichering-frontend', key: 'initialState'
Sister state containers extracted from same MFE initialState top-level keys:
- realtyValuation: 7-month price chart (data.priceDynamics.chart.data.{labels,values})
houses_price_dynamics
- reliabilityState.reliability: наш.дом.рф checkStatus + details[] house_reliability_checks
- reliability: наш.дом.рф checkStatus + details[] house_reliability_checks
- offers: grouped by roomType (fromDeveloperRooms[].layouts[])
- reviews: house reviews list
- housesByTurn: корпуса по очередям (stored as jsonb on houses)
@ -140,9 +140,7 @@ async def fetch_newbuilding(
async with BrowserFetcher() as browser:
html = await browser.fetch(zhk_url)
# Cian ЖК-карточка: MFE 'newbuilding-card-desktop-frontend', key 'initialState'
# (verified live 2026-06-15).
mfe = "newbuilding-card-desktop-frontend"
mfe = "newbuilding-card-desktop-fichering-frontend"
nb_state = extract_state(html, mfe=mfe, key="initialState")
if nb_state is None:
@ -187,9 +185,8 @@ async def fetch_newbuilding(
result.realty_valuation_chart = _extract_chart(rv_state)
result.raw_sister_states["realtyValuation"] = rv_state
# reliability (наш.дом.рф) — initialState.reliabilityState.reliability
# ({checkStatus, details[], banner, actions}, verified live 2026-06-15).
rel_state = (top.get("reliabilityState") or {}).get("reliability")
# reliability (наш.дом.рф) — located at initialState.reliability (sec 15.6)
rel_state = top.get("reliability") or mfe_states.get("reliability")
if rel_state and isinstance(rel_state, dict):
result.reliability_checks = _extract_reliability_checks(rel_state)
result.raw_sister_states["reliability"] = rel_state

View file

@ -343,11 +343,9 @@ async def test_fetch_newbuilding_parses_state(monkeypatch):
}
}
},
"reliabilityState": {
"reliability": {
"checkStatus": {"status": "reliable", "title": "Проверено"},
"details": [{"type": "problemHousesRegistry", "iconType": "success"}],
},
"reliability": {
"checkStatus": {"status": "reliable", "title": "Проверено"},
"details": [{"type": "problemHousesRegistry", "iconType": "success"}],
},
}