Python Web Scraping v roce 2026: httpx + BeautifulSoup + Playwright — Kdy použít který
Většina tutoriálů "Python web scraping" z roku 2018 stále doporučuje requests + BeautifulSoup. Část „požadavek“ je v pořádku, ale nyní existují lepší výchozí hodnoty a polovina moderního webu vykresluje obsah v JavaScriptu, takže klasický zásobník tiše vrací prázdné stránky.
Tato příručka pokrývá rozhodovací strom pro rok 2026: kdy je httpx + BeautifulSoup správný (stále více než 90 % webů), kdy sáhnout po Playwright, jak se vyhnout zablokování a dvě pravidla, která udržují váš škrabák legální i etický.
Rozhodovací strom v jednom obrázku
To je vše. Devadesát procent scrapingových úloh tvoří statické HTML — klasický zásobník (přejmenovaný) je tím správným nástrojem. Zbytek potřebuje provedení JS a Playwright je moderní odpověď.
Krok 1: httpx + BeautifulSoup (90% případ)
httpx je náhradou za požadavky. Stejné API, plus podpora HTTP/2 a nativní asynchronní. BeautifulSoup se od roku 2015 nezměnil – na výběru analyzátoru záleží (lxml je 5x rychlejší než výchozí).
Klíčové volby:
- `headers={"User-Agent": ...}` — vždy nastavte skutečné UA (kontaktní adresa je zdvořilá). Výchozí
httpxUA je často blokován. - `timeout=10` — nikdy neprovádějte neomezený požadavek; zavěšená připojení netěsní deskriptory souborů.
- `raise_for_status()` — zvyšuje na 4xx/5xx, takže selhání jsou hlasitá, nikoli tichá.
- `"lxml"` analyzátor — 5x rychlejší než výchozí
html.parsera shovívavější s chybně formátovaným HTML. - `soup.select("css-selector")` — považujte seškrabování za "předstírejte, že používáte JavaScript
document.querySelectorAll". Selektory CSS jsou obvykle to, co chcete, nikoli API pro procházení stromů.
Krok 2: Autor hry (když JS vykresluje obsah)
Mnoho moderních SPA (React, Vue, Angular) dodává prázdný <div id="root"> a hydratuje vše na straně klienta. httpx.get vám poskytne prázdný shell – požadovaná data se načtou pomocí fetch po načtení stránky.
Test: httpx.get(url).text – vyhledejte požadovaná data. Pokud tam není, web potřebuje spuštění JS.
Instalace: pip install playwright && playwright install chromium (stažení prohlížeče je ~150 MB – jednou to stojí za to, bolestivé při každém spuštění CI bez ukládání do mezipaměti).
Cena: Playwright je 10-50x pomalejší než httpx (načítání stránky + provádění JS + režie prohlížeče). Sáhněte po něm pouze tehdy, když data nejsou ve statickém HTML.
Čtyři způsoby, jak se zablokovat
Většina systémů proti poškrábání sleduje tyto čtyři otisky prstů:
1. Chybějící / zjevný User-Agent
2. Žádná prodleva mezi žádostmi
Syrové sekvenční požadavky zabíjejí server. Přidejte zpoždění úměrné jejich době odezvy – pokud zobrazení stránky trvá 500 ms, počkejte mezi požadavky 500–2 000 ms. asyncio.sleep(random.uniform(0.5, 2.0)).
3. Požadování /robots.txt nepovolené cesty
Některé weby používají robots.txt pro legitimní frekvenční signály – před seškrabováním zkontrolujte:
4. Neshoda TLS / otisku prohlížeče
Pokročilé anti-scraping (Cloudflare, DataDome) otisk vašeho TLS handshake a prostředí JS. httpx nevypadá ve vrstvě TLS jako Chrome. Možnosti:
curl_cffi— knihovna založená na curl-impersonate, která napodobuje skutečný prohlížeč TLS.- Playwright – skutečný prohlížeč TLS podle definice.
- Rotace rezidenčních proxy – jaderná varianta.
Pro 99 % případů použití (ne-nepřátelské stránky, mírná hlasitost, bez nutnosti přihlášení) stačí respekt httpx + skutečné UA + zpoždění + robots.txt. Pokud stahujete weby chráněné Cloudflare ve velkém, potřebujete skutečné prohlížeče nebo placené odblokovací služby.
Míra omezování sebe sama (semafor + spánkový vzorec)
Pro hromadné stírání zkombinujte asyncio.Semaphore (maximální počet souběžných) s asyncio.sleep (zpoždění na žádost):
Omezení na 5-10 souběžných + 500 ms-2s na požadavek zpoždění vás udrží hluboko pod tím, co spouští alarmy limitu rychlosti na většině webů.
Právní + etická pravidla
1. Přečtěte si smluvní podmínky webu. Mnoho z nich přímo zakazuje scraping – stále to můžete udělat (ToS je smluvní právo, nikoli trestní právo ve většině jurisdikcí), ale přebíráte právní riziko. LinkedIn v. hiQ (2022) prokázal, že škrábání veřejně viditelných dat není v USA porušením CAFA, ale nošení mikiny vás neudělá neviditelným.
2. Osobní údaje neškrábejte. GDPR / CCPA / vše ostatní penalizuje shromažďování osobních údajů bez souhlasu. Pokud vytváříte datovou sadu „zaměstnanců ve společnosti X“, zastavte se.
Etické doplňky, na které každý zapomene:
- Pošlete skutečnou kontaktní adresu ve svém UA. Pokud váš robot způsobuje potíže, vlastník webu by vám měl být schopen poslat e-mail.
- Pokud ukládáte data webu do mezipaměti, ukládejte do mezipaměti agresivně – nezasahujte jejich servery při každém spuštění.
- Preferujte veřejná rozhraní API, i když jsou placená. Levnější než právní riziko.
Souhrn nástrojů pro rok 2026
| Úkol | Sáhněte po |
|---|---|
| Statické HTML stránky | httpx + BeautifulSoup(html, "lxml") |
| JS-renderované SPA | Playwright (bezhlavý Chromium) |
| Cloudflare / anti-bot | curl_cffi nebo Playwright + rezidenční proxy |
| Velkoobjemové škrábání | httpx.AsyncClient + Semafor + spánek |
| Strukturovaná data API | httpx.get + .json() — není potřeba polévka |
Web scraping v roce 2026 je z 90 % stále httpx + BeautifulSoup, navíc s vědomím, kdy eskalovat do skutečného prohlížeče. Osvojte si návyky zdvořilého škrabání (skutečné UA, semafor, spánek, robots.txt) a vybudujete trvanlivé datové kanály, aniž byste byli blokováni nebo žalováni.
Další krok: Data Science track má 15 lekcí o scrapingu, ETL a pandách – vytvoříte skutečný end-to-end kanál od načítání HTTP přes DataFrame až po export CSV.