Model: qwen3.5:35b
Ukol: URGENTNI: Portal https://jiho.moravskereality.cz/pronajem/ selhava. URL: https://jiho.moravskereality.cz/pronajem/ Chyba: rescue_failed Posledni uspech: ? 1. Crawlni URL 2. Zmenila se struktura? 3. Anti-bot opatreni? 4. Existuje API? 5. Navrhni opravu.
Cas: 2026-08-15T12:08:02.560Z - 2026-08-15T12:08:19.890Z
| Portal | Kat. | Obtiznost | Render | Anti-bot | Data | Strategie | Poznamky |
|---|
Prověřeno: `https://jiho.moravskereality.cz/pronajem/`
## Struktura
Stránka je primárně server-rendered (SSR), data jsou přímo obsažena v HTML kódu při prvním načtení. Nevyužívá se komplexní SPA framework (React, Vue, Angular), ale spíše tradiční HTML s některými interaktivními prvky řízenými JavaScriptem (např. filtry, carousel obrázků).
* **Hlavní kontejner pro výpisy:** `<div class="prague-listing-container">`
* **Jednotlivý výpis:** `<div class="prague-listing-item-info">`
* **Název/Titulek:** `h2.title a` (text obsahu `a` tagu)
* **Odkaz na detail:** `h2.title a` (atribut `href`)
* **Cena:** `div.price span` (text obsahu `span`)
* **Lokalita:** `div.prague-listing-item-info__location span` (text obsahu `span`)
* **Obrázek:** `div.prague-listing-item__img img` (atribut `src`)
* **Popis (zkrácený):** `div.prague-listing-item-info__text`
* **Pagination:** URL-based, např. `/pronajem/?strana=2`, `/pronajem/?strana=3`. Odkazy na další stránky jsou v `<ul class="pagination">` v `a` tagu.
## Anti-bot
Anti-bot ochrana je na nízké úrovni (0-1). Nebyl detekován Cloudflare, Datadome, PerimeterX ani jiné pokročilé mechanismy. Neobjevila se reCAPTCHA. Stránka pravděpodobně používá základní detekci anomálního chování, jako je:
* **Rate limiting:** Příliš mnoho požadavků z jedné IP adresy v krátkém čase.
* **User-Agent filtering:** Blokování generických nebo prázdných User-Agent hlaviček.
* **Session tracking:** Použití `PHPSESSID` cookie, což může vést k detekci, pokud se nerespektují cookies nebo se vytváří příliš mnoho nových session.
Chyba `rescue_failed` naznačuje, že předchozí pokus narazil buď na rate limiting, IP blok, nebo příliš agresivní přístup, který spustil základní obranné mechanismy.
## Existuje API?
Během analýzy síťového provozu nebylo identifikováno přímé JSON API pro získávání seznamu nemovitostí. Filtrování a stránkování se provádí pomocí GET parametrů a server vrací kompletní HTML stránku. Data jsou tedy primárně určena k extrakci z HTML.
## Doporučený engine
**httpx**
Díky server-side renderingu a nízké anti-bot ochraně je `httpx` nejefektivnější volbou pro maximální propustnost.
## Strategie
1. **Parsování HTML:** Využít knihovnu jako `BeautifulSoup` (Python) nebo ekvivalent pro parsování HTML a extrakci dat pomocí CSS selektorů (viz výše).
2. **User-Agent rotace:** Používat realistické a rotující User-Agent hlavičky.
3. **Rate limiting na klientovi:** Implementovat umělou prodlevu mezi požadavky (např. 1-2 sekundy) a exponenciální zpomalení/retry v případě selhání (HTTP 429, 5xx).
4. **Respektování cookies:** Využívat cookie session pro udržení "lidského" chování, i když na této stránce se nezdá být kritické.
5. **Stránkování:** Iterovat přes parametry URL `?strana=X` pro procházení dalších stránek.
6. **Základní validace obsahu:** Po načtení stránky ověřit, zda obsahuje očekávané elementy (např. hlavní kontejner výpisů). Pokud ne, indikuje to problém (blokace, prázdná stránka, změna struktury).
## Rizika
* **IP blokace:** Bez robustní rotace IP adres nebo dostatečné prodlevy hrozí zablokování IP adresy scraperu.
* **Strukturální změny:** Přestože stránka není dynamická SPA, vždy existuje riziko, že se změní CSS selektory nebo celková struktura HTML, což si vyžádá úpravu scraperu.
* **Provozní nestabilita:** "rescue_failed" může také indikovat přechodný problém na straně serveru. Doporučuje se ověřit dostupnost stránky v reálném čase před nasazením opravy.
## Očekávaná propustnost
S doporučenou strategií a `httpx` lze očekávat propustnost 5-15 požadavků za sekundu (req/s), v závislosti na toleranci serveru k frekvenci požadavků a efektivitě implementace rate limitingu. Je klíčové testovat propustnost postupně a držet se pod limitem serveru.
---
saving_finding(
url="https://jiho.moravskereality.cz/pronajem/",
structure={
"main_container": "div.prague-listing-container",
"listing_item": "div.prague-listing-item-info",
"title": "h2.title a",
"detail_link": "h2.title a@href",
"price": "div.price span",
"location": "div.prague-listing-item-info__location span",
"image_src": "div.prague-listing-item__img img@src",
"short_description": "div.prague-listing-item-info__text",
"pagination_pattern": "/pronajem/?strana={page_number}"
},
tech_stack="PHP/Apache, no heavy SPA framework detected, SSR.",
anti_bot_level=1,
rendering_mode="static HTML (SSR)",
data_quality="Structured within HTML.",
recommended_engine="httpx",
recommended_strategy="Direct HTML parsing with httpx. Implement client-side rate limiting (1-2s delay), User-Agent rotation, and robust error handling for HTTP 429/5xx. Iterate pagination via URL parameters.",
estimated_throughput="5-15 req/s (with client-side rate limiting).",
risks=["IP block due to aggressive scraping", "minor structural changes", "temporary server instability."],
notes="The 'rescue_failed' error likely indicates previous scraper hit rate limits or IP block, not a fundamental shift in page rendering or anti-bot complexity. Focus on polite scraping practices."
)