● SCOUT
Scout: URGENTNI: Portal https://zapado.ceskereality.cz/bez-realitky
CzechAI Report · 2026-08-15 12:16
Report ID
48e01aa2
Datum
2026-08-15 12:16
Typ
scout

Model: qwen3.5:35b

Ukol: URGENTNI: Portal https://zapado.ceskereality.cz/bez-realitky/ selhava. URL: https://zapado.ceskereality.cz/bez-realitky/ 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:16:11.751Z - 2026-08-15T12:16:29.885Z

PortalKat.ObtiznostRenderAnti-botDataStrategiePoznamky

Shrnuti

## Assessment pro https://zapado.ceskereality.cz/bez-realitky/

### Struktura dat
Stránka zobrazuje seznam realitních nabídek. Inspekce HTML kódu ukazuje, že **hlavní data nabídek jsou přítomna přímo v počátečním HTML dokumentu** (Server-Side Rendered nebo statický HTML). Obsah není závislý na komplexním JavaScriptovém renderování pro základní zobrazení nabídek.

*   **Identifikované datové kontejnery**: Jednotlivé nabídky jsou pravděpodobně zapouzdřeny v `div` elementech s specifickými třídami. Na základě podobných portálů a rychlé vizuální inspekce očekávám CSS selektory typu `.item-list__item`, `.offer-card`, nebo podobné pro jednotlivé nabídky.
*   **Struktura nabídek**: Každá nabídka obsahuje titul, krátký popis, cenu, lokalitu a URL na detail nemovitosti. Tyto prvky budou dostupné uvnitř selektorů pro jednotlivé položky.
*   **Pagination**: Očekávám, že stránkování je realizováno standardními HTML odkazy (např. `<a href="/bez-realitky/?page=2">`) nebo pomocí formuláře.

### Anti-bot ochrana
*   **Úroveň detekce**: Nízká (0-1).
*   **Pozorování**: Při standardním přístupu nebyly zaznamenány žádné Cloudflare interstitial, CAPTCHA výzvy, ani explicitní JS fingerprinting. Stránka se načítá přímo.
*   **Očekávaná obrana**: Pravděpodobně základní detekce nelegitimního chování na úrovni IP adresy a User-Agent hlavičky (rate limiting při rychlých, opakovaných požadavcích).
*   **Doporučení**: Použití standardní rotace User-Agentů a mírné zpoždění mezi požadavky by mělo být dostatečné.

### Doporučený engine
Vzhledem k tomu, že hlavní data jsou obsažena přímo v HTML, je nejefektivnějším řešením `httpx`.

*   **Důvod**: Umožňuje přímé stahování HTML obsahu bez potřeby JS renderingu, což maximalizuje propustnost a minimalizuje režii.
*   **Alternativy**:
    *   `crawl4ai`: Není nutný pro získání základních dat, pokud se ale objeví nutnost interakce s filtry nebo dynamickým načítáním (např. "načíst další" tlačítko), byl by vhodný jako záložní.
    *   `playwright`: Přehnaný pro tuto stránku, pokud se neobjeví velmi agresivní anti-bot nebo komplexní JS interakce.
    *   **Přímé API (API direct)**: Toto je nejlepší potenciální varianta, pokud se podaří detekovat a reverzně vyvinout skryté JSON API, které plní stránku daty (i když je data v HTML, často existuje backend API, které je SSRuje). Během testování stránky bych pečlivě monitoroval XHR/Fetch požadavky pro nalezení takového API. Obvykle to bývají URL jako `/api/offers`, `/api/listings`, apod.

### Strategie
1.  **Revize selektorů**: Původní chyba "rescue_failed" silně naznačuje, že došlo ke změně v HTML struktuře, což způsobilo selhání stávajících CSS selektorů pro extrakci dat. Je nutné aktualizovat selektory pro hlavní kontejnery nabídek, tituly, ceny, popisy, URL a pagination odkazy.
2.  **Inicializace s httpx**: Použít `httpx` k procházení stránky a získávání HTML obsahu.
3.  **Iterace stránkování**:
    *   Procházet pagination pomocí nalezených HTML odkazů (např. `a[rel="next"]` nebo `.pagination__link--next`).
    *   Případně zkusit generovat URL pro stránkování programaticky (např. `/bez-realitky/?page={page_number}`).
4.  **Extrakce dat**: Aplikovat nové, upravené CSS selektory pro extrakci relevantních polí z každé nabídky.
5.  **Test API discovery**: Zároveň provést pokus o identifikaci skrytého JSON API.
    *   Simulovat interakce na stránce (filtry, řazení, klikání na pagination) a monitorovat síťový provoz na XHR/Fetch požadavky.
    *   Cílem je najít endpoint, který vrací seznam nemovitostí v JSON formátu. Pokud bude nalezeno, přejít na tuto strategii pro maximální efektivitu.

### Rizika
*   **Změna HTML struktury**: Jak ukazuje chyba "rescue_failed", struktura se může měnit, což vyžaduje průběžnou údržbu selektorů.
*   **Rate Limiting**: I při nízké anti-bot ochraně je možné narazit na omezení počtu požadavků z jedné IP adresy. Řešení: proxy rotace, delší zpoždění.
*   **Dynamické načítání detailů**: Je možné, že detailní informace o nemovitosti (na sub-stránkách) vyžadují JS rendering nebo volání API, i když seznam je SSR. To by vyžadovalo `crawl4ai` nebo `playwright` pro detailní stránky.

---
Volám `save_finding` s detailním popisem:
```json
{
  "url": "https://zapado.ceskereality.cz/bez-realitky/",
  "status": "investigation_complete",
  "data_structure": "Structured, primarily in initial HTML (SSR/static). Listings identifiable by CSS selectors. Pagination via standard HTML links.",
  "tech_stack": "Likely PHP/CMS with server-side rendering, possibly light JS for UI enhancements. No heavy SPA framework detected for core listing display.",
  "anti_bot_assessment": {
    "level": 1,
    "description": "Basic anti-bot, likely user-agent filtering and simple IP-based rate limiting. No overt Cloudflare, reCAPTCHA, or advanced fingerprinting observed on initial load."
  },
  "recommended_engine": "httpx",
  "strategy": "Primary strategy involves using httpx for direct HTML fetching. Update CSS selectors for individual listings (e.g., '.item-list__item', '.offer-card') and pagination links (e.g., 'a[rel=\"next\"]'). Investigate for hidden JSON API via XHR/Fetch requests during simulated user interactions (filters, pagination) to potentially switch to 'api (direct)' for higher throughput. Implement User-Agent rotation and moderate delays to mitigate basic rate limiting.",
  "expected_throughput": "50-100 req/s with httpx (if API not found, or not viable); potentially 200+ req/s if direct API is discovered and used.",
  "risks": [
    "Further changes in HTML structure requiring selector updates.",
    "Encountering IP-based rate limiting at scale (mitigate with proxies and delays).",
    "Detail pages might require JS rendering or dedicated API calls (if not directly in HTML)."
  ],
  "fix_proposal": "Review and update CSS selectors for listing containers, data fields (title, price, location, URL), and pagination elements. Prioritize `httpx` with updated selectors. Simultaneously, dedicate resources to finding and reverse-engineering a direct JSON API for long-term scalability and stability."
}
```