Preskoči na glavni sadržaj
Python alati2026-07-29 · 10 min čitanja

Python Web Scraping u 2026.: httpx + BeautifulSoup + Playwright — kada koristiti koji

Većina vodiča za "Python web scraping" iz 2018. i dalje preporučuje requests + BeautifulSoup. Dio requests je u redu, ali sada postoje bolje zadane postavke, a polovica modernog weba prikazuje sadržaj u JavaScriptu tako da klasični hrp tiho vraća prazne stranice.

Ovaj vodič pokriva stablo odlučivanja za 2026.: kada je httpx + BeautifulSoup ispravan (još uvijek više od 90% web-mjesta), kada posegnuti za Playwright, kako izbjeći blokiranje i dva pravila koja vaš scraper održavaju zakonitim i etičkim.

Stablo odluke u jednoj slici

▶ PYTHONeditable · runs in your browser

To je to. Devedeset posto zadataka struganja statički je HTML — klasični stog (preimenovan) pravi je alat. Za ostalo je potrebno JS izvršenje, a Playwright je moderan odgovor.

Korak 1: httpx + BeautifulSoup (90% slučajeva)

httpx je zamjena za requests. Isti API, plus HTTP/2 podrška i nativni async. BeautifulSoup nije promijenjen u odnosu na 2015. — bitan je izbor parsera (lxml je 5x brži od zadanog).

▶ PYTHONeditable · runs in your browser

Ključni izbori:

  • `headers={"User-Agent": ...}` — uvijek postavite pravi UA (adresa za kontakt je pristojna). Zadani httpx UA često je blokiran.
  • `timeout=10` — nikad ne postavljaj neograničeni zahtjev; obješene veze curenje deskriptori datoteka.
  • `raise_for_status()` — povišice na 4xx/5xx tako da su neuspjesi glasni, a ne tihi.
  • `"lxml"` parser — 5x brži od zadanog html.parser, i više oprašta s neispravnim HTML-om.
  • `soup.select("css-selector")` — tretirajte struganje kao "pretvarajte se da koristite JavaScriptov document.querySelectorAll". CSS selektori obično su ono što želite, a ne API za hodanje po stablu.

Korak 2: Autor (kada JS renderira sadržaj)

Mnogi moderni SPA (React, Vue, Angular) šalju prazan <div id="root"> i hidratiziraju sve na strani klijenta. httpx.get vam daje praznu ljusku — podaci koje želite učitavaju se putem fetch nakon učitavanja stranice.

Test: httpx.get(url).text — tražite podatke koje želite. Ako ga nema, web mjesto treba JS izvršavanje.

▶ PYTHONeditable · runs in your browser

Instalirajte: pip install playwright && playwright install chromium (preuzimanje preglednika je ~150 MB — isplati se jednom, bolno pri svakom pokretanju CI bez predmemoriranja).

Trošak: Playwright je 10-50x sporiji od httpx (učitavanje stranice + izvršavanje JS-a + opterećenje preglednika). Posegnite za njim samo kada podaci nisu u statičkom HTML-u.

Četiri načina za blokiranje

Većina sustava protiv struganja prati ova četiri otiska prsta:

1. Nedostaje / očigledan korisnički agent

▶ PYTHONeditable · runs in your browser

2. Nema kašnjenja između zahtjeva

Sirovi sekvencijalni zahtjevi opterećuju poslužitelj. Dodajte odgodu proporcionalnu njihovom vremenu odgovora — ako stranici treba 500 ms da se posluži, pričekajte 500-2000 ms između zahtjeva. asyncio.sleep(random.uniform(0.5, 2.0)).

3. Traženje nedopuštenih staza /robots.txt

Neka web-mjesta koriste robots.txt za legitimne signale brzine — provjerite prije struganja:

▶ PYTHONeditable · runs in your browser

4. Neusklađenost TLS-a / otiska prsta preglednika

Napredni anti-scraping (Cloudflare, DataDome) otisak vašeg TLS rukovanja i JS okruženje. httpx ne izgleda kao Chrome na TLS sloju. Mogućnosti:

  • curl_cffi — biblioteka zasnovana na imitaciji curl-a koja oponaša pravi TLS preglednika.
  • Dramatičar — pravi TLS preglednika po definiciji.
  • Rotirajte rezidencijalne proxyje — nuklearna opcija.

Za 99% slučajeva upotrebe (stranice koje nisu neprijateljske, umjereni volumen, nije potrebna prijava), dovoljno je poštovanje httpx + pravi UA + kašnjenje + robots.txt. Ako krupno skenirate web stranice zaštićene Cloudflareom, potrebni su vam pravi preglednici ili plaćene usluge deblokiranja.

Ograničite sami sebe (semafor + uzorak spavanja)

Za skupno struganje, kombinirajte asyncio.Semaphore (maks. istovremeno) s asyncio.sleep (odgoda po zahtjevu):

▶ PYTHONeditable · runs in your browser

Ograničenje na 5-10 istodobnih + 500ms-2s po zahtjevu odgode drži vas znatno ispod onoga što pokreće alarme ograničenja brzine na većini web-mjesta.

Pravna + etička pravila

1. Pročitajte Uvjete pružanja usluge web-mjesta. Mnogi izravno zabranjuju struganje — još uvijek to možete učiniti (ToS je ugovorno, a ne kazneno pravo u većini jurisdikcija), ali preuzimate pravni rizik. LinkedIn protiv hiQ-a (2022.) utvrdio je da skrapiranje javno vidljivih podataka nije kršenje CFAA-e u SAD-u, ali nošenje majice s kapuljačom ne čini vas nevidljivima.

2. Nemojte škrapati osobne podatke. GDPR / CCPA / sve ostalo kažnjava prikupljanje osobnih podataka bez pristanka. Ako gradite skup podataka o "zaposlenicima u tvrtki X", prestanite.

Etički dodaci koje svi zaboravljaju:

  • Pošaljite stvarnu kontakt adresu u svoj UA. Ako vaš bot uzrokuje probleme, vlasnik stranice trebao bi vam moći poslati e-poštu.
  • Ako predmemorirate podatke web-mjesta, predmemorirajte agresivno — nemojte napadati njihove poslužitelje pri svakom pokretanju.
  • Preferirajte javne API-je čak i ako su plaćeni. Jeftinije od pravnog rizika.

Sažetak alata za 2026

| Zadatak | Posegnite za |

|---|---|

| Statičke HTML stranice | httpx + BeautifulSoup(html, "lxml") |

| SPA izvedeno JS | Playwright (bezglavi Chromium) |

| Cloudflare / anti-bot | curl_cffi ili Playwright + stambeni proxy |

| Struganje velike količine | httpx.AsyncClient + Semafor + spavanje |

| Strukturirani API podaci | httpx.get + .json() — nije potrebna juha |


Web scraping u 2026. je 90% i dalje httpx + BeautifulSoup, plus znanje kada treba eskalirati na pravi preglednik. Savladajte navike pristojnog struganja (pravi UA, semafor, spavanje, robots.txt) i izgradit ćete trajne podatkovne kanale bez blokiranja ili tužbe.

Sljedeći korak: Data Science staza ima 15 lekcija o struganju, ETL-u i pandama — izgradit ćete pravi cjevovod od kraja do kraja od HTTP dohvaćanja do DataFramea do CSV izvoza.

Jeste li spremni isprobati?

15 besplatne lekcije nakon besplatne prijave — bez kartice. Isprobajte platformu, a zatim odlučite.

Počni besplatno →

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.