Sari la conținutul principal
Instrumente Python2026-07-29 · 10 min de citit

Python Web Scraping în 2026: httpx + BeautifulSoup + Dramaturg — Când să folosiți pe care

Cele mai multe tutoriale „Python web scraping” din 2018 încă mai recomandă „cereri + BeautifulSoup”. Partea „cereri” este în regulă, dar acum există valori implicite mai bune, iar jumătate din web-ul modern redă conținut în JavaScript, astfel încât stiva clasică returnează în tăcere pagini goale.

Acest ghid acoperă arborele de decizie din 2026: când httpx + BeautifulSoup are dreptate (încă 90%+ din site-uri), când să apelezi la Dramatur, cum să eviți să fii blocat și cele două reguli care țin scraper-ul atât legal, cât și etic.

Arborele de decizie într-o singură imagine

▶ PYTHONeditable · runs in your browser

Asta e. Nouăzeci la sută din sarcinile de scraping sunt HTML static - stiva clasică (redenumită) este instrumentul potrivit. Restul au nevoie de execuție JS, iar dramaturg este răspunsul modern.

Pasul 1: httpx + BeautifulSoup (cazul 90%)

httpx este înlocuitorul drop-in pentru cereri. Același API, plus suport HTTP/2 și asincronizare nativă. BeautifulSoup este neschimbat față de 2015 — alegerea parserului contează (lxml este de 5 ori mai rapid decât valoarea implicită).

▶ PYTHONeditable · runs in your browser

Alegeri cheie:

  • `headers={"User-Agent": ...}` — setați întotdeauna un UA real (o adresă de contact este politicoasă). httpx UA implicit este adesea blocat.
  • `timeout=10` — nu face niciodată o cerere nelimitată; conexiunile suspendate scurg descriptori de fișiere.
  • `raise_for_status()` — crește pe 4xx/5xx, astfel încât eșecurile sunt puternice, nu silențioase.
  • `"lxml"` parser — de 5 ori mai rapid decât html.parser implicit și mai îngăduitor cu HTML malformat.
  • `soup.select("css-selector")` — tratează scrapingul ca „prefă-te că folosești document.querySelectorAll din JavaScript”. Selectoarele CSS sunt de obicei ceea ce doriți, nu API-ul tree-walking.

Pasul 2: Dramaturg (când JS redă conținutul)

Multe SPA-uri moderne (React, Vue, Angular) livrează un <div id="root"> gol și hidratează totul pe partea clientului. httpx.get vă oferă un shell gol — datele pe care le doriți sunt încărcate prin fetch după încărcarea paginii.

Test: httpx.get(url).text — căutați datele dorite. Dacă nu este acolo, site-ul are nevoie de execuție JS.

▶ PYTHONeditable · runs in your browser

Instalare: pip install playwright && playwright install chromium (descărcarea browserului este de ~150MB - merită o dată, dureros la fiecare rulare CI fără cache).

Cost: Dramaturgul este de 10-50 de ori mai lent decât httpx (încărcare pagină + execuție JS + overhead browser). Atinge-l numai atunci când datele nu sunt în HTML static.

Cele patru moduri de a fi blocat

Majoritatea sistemelor anti-răzuire urmăresc aceste patru amprente:

1. Lipsă/evident User-Agent

▶ PYTHONeditable · runs in your browser

2. Nicio întârziere între cereri

Cererile secvenţiale brute lovesc un server. Adăugați o întârziere proporțională cu timpul de răspuns - dacă o pagină durează 500 ms pentru a fi difuzată, așteptați 500-2000 ms între solicitări. asyncio.sleep(random.uniform(0.5, 2.0)).

3. Solicitarea căilor nepermise /robots.txt

Unele site-uri folosesc robots.txt pentru semnale de rată legitime - verificați înainte de a răzui:

▶ PYTHONeditable · runs in your browser

4. TLS / nepotrivire a amprentei browserului

Anti-scraping avansat (Cloudflare, DataDome) amprenta dvs. de strângere de mână TLS și mediu JS. httpx nu seamănă deloc cu Chrome la nivelul TLS. Opțiuni:

  • curl_cffi — o bibliotecă bazată pe curl-impersonare care imită TLS real al browserului.
  • Dramaturg - browser real TLS prin definiție.
  • Rotați proxy rezidențiali — opțiunea nucleară.

Pentru 99% din cazuri de utilizare (site-uri non-ostile, volum moderat, nu este necesară autentificare), respectul httpx + real UA + delay + robots.txt este suficient. Dacă răzuiți site-uri protejate de Cloudflare la scară largă, aveți nevoie de browsere reale sau de servicii de deblocare plătite.

Evaluați limitarea dvs. (semaforul + modelul de somn)

Pentru răzuirea în bloc, combinați asyncio.Semaphore (maximum simultan) cu asyncio.sleep (întârziere la cerere):

▶ PYTHONeditable · runs in your browser

Limitarea la 5-10 întârzieri simultane + 500ms-2s per solicitare vă menține cu mult sub ceea ce declanșează alarme de limită de rată pe majoritatea site-urilor.

Reguli legale + etice

1. Citiți Termenii și condițiile site-ului. Mulți interzic pur și simplu scraping - puteți face acest lucru (ToS este legea contractuală, nu legea penală în majoritatea jurisdicțiilor), dar vă asumați riscuri juridice. LinkedIn v. hiQ (2022) a stabilit că eliminarea datelor vizibile public nu este o încălcare a CFAA în SUA, dar purtarea unui hanorac nu te face invizibil.

2. Nu răzuiți datele personale. GDPR / CCPA / orice altceva penalizează colectarea de informații personale fără consimțământ. Dacă construiți un set de date de „angajați la Compania X”, opriți-vă.

Adăugiri etice pe care toată lumea le uită:

  • Trimiteți o adresă de contact reală în UA. Dacă botul dvs. provoacă probleme, proprietarul site-ului ar trebui să vă poată trimite un e-mail.
  • Dacă memorați în cache datele site-ului, păstrați cache în mod agresiv - nu loviți serverele lor la fiecare rulare.
  • Preferați API-urile publice chiar dacă sunt plătite. Mai ieftin decât riscul legal.

Rezumatul instrumentelor din 2026

| Sarcina | Ajunge la |

|---|---|

| Pagini HTML statice | httpx + BeautifulSoup(html, "lxml") |

| JS-rendered SPA | Dramaturg (Crom fără cap) |

| Cloudflare / anti-bot | curl_cfi sau Dramaturg + proxy rezidențial |

| Razuire de volum mare | httpx.AsyncClient + Semafor + sleep |

| Date API structurate | httpx.get + .json() — nu este nevoie de supă |


Web scraping în 2026 este încă 90% httpx + BeautifulSoup, plus știind când să escaladeze la un browser real. Stăpânește obiceiurile politicoase (UA real, semafor, sleep, robots.txt) și vei construi conducte de date durabile fără a fi blocat sau dat în judecată.

Următorul pas: Pietă Data Science are 15 lecții despre scraping, ETL și panda - veți construi o conductă reală de la capăt la capăt de la preluarea HTTP la DataFrame la exportul CSV.

Ești gata să-l încerci?

15 lecții gratuite după o înscriere gratuită — fără card. Eșantionați platforma, apoi decideți.

Începe gratuit →

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.