Przejdź do treści głównej
Narzędzia Pythona2026-07-29 · 10 min czytania

Python Web Scraping w 2026 r.: httpx + BeautifulSoup + Dramat — Kiedy używać którego

Większość samouczków „Skrobanie sieci w Pythonie” z 2018 roku nadal zaleca requests + BeautifulSoup. Część „żądania” jest w porządku, ale są teraz lepsze ustawienia domyślne, a połowa współczesnej sieci renderuje treść w JavaScript, więc klasyczny stos po cichu zwraca puste strony.

W tym przewodniku omówiono drzewo decyzyjne na rok 2026: kiedy httpx + BeautifulSoup jest właściwe (nadal ponad 90% witryn), kiedy sięgnąć po Playwright, jak uniknąć zablokowania oraz dwie zasady, dzięki którym Twój skrobak będzie zarówno legalny, jak i etyczny.

Drzewo decyzyjne na jednym obrazie

▶ PYTHONeditable · runs in your browser

To wszystko. Dziewięćdziesiąt procent zadań skrobania to statyczny kod HTML — klasyczny stos (zmieniona nazwa) jest właściwym narzędziem. Reszta wymaga wykonania JS, a współczesną odpowiedzią jest Playwright.

Krok 1: httpx + BeautifulSoup (przypadek 90%)

„httpx” to rozwijany zamiennik „żądań”. To samo API, plus obsługa HTTP/2 i natywna asynchronizacja. BeautifulSoup nie uległo zmianie od 2015 roku — wybór parsera ma znaczenie (lxml jest 5 razy szybszy niż domyślny).

▶ PYTHONeditable · runs in your browser

Kluczowe wybory:

  • `headers={"User-Agent": ...}` — zawsze ustawiaj prawdziwe UA (adres kontaktowy jest uprzejmy). Domyślny interfejs użytkownika httpx jest często blokowany.
  • `timeout=10` — nigdy nie wykonuj nieograniczonego żądania; zawieszone połączenia przeciekają deskryptory plików.
  • `raise_for_status()` — podbija na 4xx/5xx, więc awarie są głośne, a nie ciche.
  • `"lxml"` parser — 5 razy szybszy niż domyślny html.parser i bardziej wyrozumiały w przypadku zniekształconego kodu HTML.
  • `soup.select("css-selector")` — traktuj skrobanie jako „udawaj, że używasz document.querySelectorAll JavaScriptu”. Selektory CSS są zwykle tym, czego chcesz, a nie API poruszającym się po drzewach.

Krok 2: Dramaturg (kiedy JS renderuje treść)

Wiele nowoczesnych SPA (React, Vue, Angular) dostarcza pusty <div id="root"> i nawadnia wszystko po stronie klienta. httpx.get daje pustą powłokę — żądane dane są ładowane poprzez fetch po załadowaniu strony.

Test: httpx.get(url).text — wyszukaj żądane dane. Jeśli go tam nie ma, witryna wymaga wykonania JS.

▶ PYTHONeditable · runs in your browser

Zainstaluj: pip install playwright && playwright install chromium (pobranie przeglądarki kosztuje ~ 150MB — warto raz, bolesne przy każdym uruchomieniu CI bez buforowania).

Koszt: Playwright jest 10-50 razy wolniejszy niż httpx (ładowanie strony + wykonanie JS + obciążenie przeglądarki). Sięgaj po niego tylko wtedy, gdy dane nie znajdują się w statycznym kodzie HTML.

Cztery sposoby na zablokowanie

Większość systemów zapobiegających zarysowaniu wykrywa cztery odciski palców:

1. Brakujący/oczywisty Agent użytkownika

▶ PYTHONeditable · runs in your browser

2. Brak opóźnień między żądaniami

Surowe żądania sekwencyjne obciążają serwer. Dodaj opóźnienie proporcjonalne do czasu odpowiedzi — jeśli wyświetlenie strony zajmuje 500 ms, odczekaj 500–2000 ms między żądaniami. asyncio.sleep(random.uniform(0.5, 2.0)).

3. Żądanie /robots.txt niedozwolonych ścieżek

Niektóre witryny używają pliku „robots.txt” do uzyskania wiarygodnych sygnałów prędkości — sprawdź przed skrobaniem:

▶ PYTHONeditable · runs in your browser

4. Niezgodność TLS/odcisku palca przeglądarki

Zaawansowane zabezpieczenie przed skrobaniem (Cloudflare, DataDome) umożliwia odcisk palca podczas uzgadniania TLS i środowiska JS. httpx w niczym nie przypomina Chrome w warstwie TLS. Opcje:

  • curl_cffi — biblioteka oparta na curl-impersonate, która naśladuje TLS prawdziwej przeglądarki.
  • Dramaturg — z definicji prawdziwa przeglądarka TLS.
  • Rotacja proxy mieszkaniowych – opcja nuklearna.

W 99% przypadków użycia (strony niewrogie, umiarkowana głośność, brak konieczności logowania) wystarczy szacunek httpx + prawdziwe UA + opóźnienie + robots.txt. Jeśli skrobasz witryny chronione przez Cloudflare na dużą skalę, potrzebujesz prawdziwych przeglądarek lub płatnych usług odblokowywania.

Ograniczanie szybkości (semafor + wzorzec snu)

Do zbiorczego skrobania połącz asyncio.Semaphore (maksymalnie współbieżne) z asyncio.sleep (opóźnienie na żądanie):

▶ PYTHONeditable · runs in your browser

Ograniczenie do 5-10 jednoczesnych + 500 ms-2 s opóźnienia na żądanie utrzymuje Cię znacznie poniżej poziomu wyzwalającego alarmy ograniczenia szybkości w większości witryn.

Zasady prawne + etyczne

1. Przeczytaj Warunki korzystania z usługi na stronie. Wiele z nich wprost zabrania skrobania — nadal możesz to zrobić (W większości jurysdykcji ToS to prawo umów, a nie prawo karne), ale podejmujesz ryzyko prawne. LinkedIn przeciwko hiQ (2022) ustaliło, że pobieranie publicznie widocznych danych nie stanowi naruszenia ustawy CFAA w USA, ale noszenie bluzy z kapturem nie czyni Cię niewidzialnym.

2. Nie kopiuj danych osobowych. RODO / CCPA / wszystko inne karze zbieranie danych osobowych bez zgody. Jeśli tworzysz zbiór danych „pracowników firmy X”, przestań.

Dodatki etyczne, o których wszyscy zapominają:

  • Wyślij prawdziwy adres kontaktowy w swoim UA. Jeśli Twój bot sprawia problemy, właściciel witryny powinien móc wysłać do Ciebie e-mail.
  • Jeśli buforujesz dane witryny, buforuj agresywnie — nie uderzaj w ich serwery przy każdym uruchomieniu.
  • Preferuj publiczne interfejsy API, nawet jeśli są płatne. Tańsze niż ryzyko prawne.

Podsumowanie narzędzi na rok 2026

| Zadanie | Sięgnij po |

|---|---|

| Statyczne strony HTML | httpx + PięknaZupa(html, "lxml") |

| SPA renderowane przez JS | dramaturg (bezgłowy Chrom) |

| Cloudflare / antybot | curl_cffi lub Dramaturg + proxy rezydentne |

| Skrobanie o dużej objętości | httpx.AsyncClient + Semafor + tryb uśpienia |

| Ustrukturyzowane dane API | httpx.get + .json() — nie potrzeba zupy |


Przeglądanie stron internetowych w 2026 r. to w 90% nadal „httpx + BeautifulSoup” plus wiedza, kiedy przejść do prawdziwej przeglądarki. Opanuj nawyki grzecznościowego skrobania (prawdziwe UA, semafor, sen, plik robots.txt), a zbudujesz trwałe potoki danych bez blokowania i pozywania.

Następny krok: ścieżka Data Science zawiera 15 lekcji na temat skrobania, ETL i pand — zbudujesz prawdziwy, kompleksowy potok od pobrania HTTP przez DataFrame do eksportu CSV.

Gotowy, aby spróbować?

15 lekcji gratis po darmowej rejestracji – bez karty. Wypróbuj platformę i podejmij decyzję.

Zacznij bezpłatnie →

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.