Přejít k hlavnímu obsahu
Python Tooling2026-07-29 · 10 min čtení

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

▶ PYTHONeditable · runs in your browser

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í).

▶ PYTHONeditable · runs in your browser

Klíčové volby:

  • `headers={"User-Agent": ...}` — vždy nastavte skutečné UA (kontaktní adresa je zdvořilá). Výchozí httpx UA 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.parser a 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.

▶ PYTHONeditable · runs in your browser

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

▶ PYTHONeditable · runs in your browser

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:

▶ PYTHONeditable · runs in your browser

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):

▶ PYTHONeditable · runs in your browser

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.

Jste připraveni to vyzkoušet?

15 lekcí zdarma po bezplatné registraci – žádná karta. Vyzkoušejte platformu a pak se rozhodněte.

Začněte zdarma →

Or unlock every lesson

Pro — $12/mo, unlimited AI, cancel any time. Refund within 14 days worldwide.

See Pro plans →

Get one Python lesson + one career idea every Friday

No spam, no "buy our course now". Three bullets, every Friday. Unsubscribe with one click.