A Step-by-Step Python Selenium Web Scraping Tutorial

Ultima actualizare pe May 6, 2026
Step-by-step Python Selenium web scraping tutorial title slide with coding and web icons

Webul nu mai arată ca acum câțiva ani. Astăzi, aproape orice site pe care îl vizitezi este alimentat de JavaScript și își încarcă conținutul pe parcurs — gândește-te la derularea infinită, la ferestrele pop-up și la dashboardurile care își arată datele abia după un clic sau două. De fapt, un impresionant 98,7% dintre toate site-urile folosesc acum JavaScript, ceea ce înseamnă că instrumentele vechi de scraping, care citesc doar HTML static, ratează o mulțime de date valoroase. Dacă ai încercat vreodată să extragi prețuri de produse de pe un site modern de e-commerce sau să preiei anunțuri imobiliare de pe o hartă interactivă, știi frustrarea: datele pe care le vrei pur și simplu nu există în codul sursă.

Aici intră în scenă scraping-ul cu Selenium. Ca cineva care a petrecut ani construind instrumente de automatizare și, da, extrăgând mai multe site-uri decât aș vrea să recunosc, îți pot spune că stăpânirea Selenium este o superputere pentru oricine are nevoie de date dinamice, actualizate. În acest tutorial practic de web scraping cu Selenium, te voi ghida prin pașii esențiali — de la configurare la automatizare — și îți voi arăta cum să combini Selenium cu Thunderbit pentru date structurate, gata de export. Fie că ești analist de business, specialist în vânzări sau doar un utilizator curios de Python, vei pleca de aici cu abilități practice și cu câteva motive de zâmbit (pentru că, sincer, depanarea selectorilor XPath îți călește caracterul).

Încearcă AI Web Scraper de la Thunderbit

Ce este Selenium și de ce să-l folosești pentru web scraping?

selenium-dynamic-vs-static-web-scraping.png Hai să începem cu bazele. Selenium este un framework open-source care îți permite să controlezi un browser web real — precum Chrome sau Firefox — prin cod. Gândește-te la el ca la un robot care poate deschide pagini, da clic pe butoane, completa formulare, derula și chiar rula JavaScript, exact ca un utilizator uman. E important, pentru că majoritatea site-urilor moderne nu îți afișează toate datele de la început. În schimb, încarcă conținutul dinamic, adesea după ce interacționezi cu pagina.

Ce este data scraping și cum îl faci în 2026 Get Started Free

De ce contează asta pentru scraping? Instrumentele tradiționale precum BeautifulSoup sau Scrapy sunt excelente pentru HTML static, dar nu pot „vedea” nimic încărcat de JavaScript după încărcarea inițială a paginii. Selenium, în schimb, poate interacționa cu pagina în timp real, ceea ce îl face perfect pentru:

  • Extracția listelor de produse care apar doar după ce apeși „Load More”
  • Preluarea prețurilor sau recenziilor care se actualizează dinamic
  • Navigarea prin formulare de autentificare, ferestre pop-up sau derulare infinită
  • Extragerea datelor din dashboarduri, hărți sau alte elemente interactive

Pe scurt, Selenium este instrumentul ideal atunci când trebuie să extragi date care apar abia după ce pagina s-a încărcat complet — sau după o acțiune a utilizatorului.

Pașii cheie pentru web scraping cu Python și Selenium

Scraping-ul cu Selenium se reduce la trei pași esențiali:

PasCe faciDe ce contează
1. Configurarea mediuluiInstalezi Selenium, WebDriver și bibliotecile PythonÎți pregătești uneltele și eviți durerile de cap la configurare
2. Localizarea elementelorGăsești datele dorite folosind ID-uri, clase, XPath etc.Țintești informația corectă, chiar dacă este ascunsă de JavaScript
3. Extragerea și salvarea datelorPreiei text, linkuri sau tabele și le salvezi în CSV/ExcelTransformi datele brute de pe web în ceva utilizabil

Să intrăm în fiecare pas cu exemple practice și cod pe care îl poți copia, ajusta și povesti prietenilor.

Pasul 1: Configurarea mediului Python și Selenium

Mai întâi de toate: trebuie să instalezi Selenium și un driver pentru browser (de exemplu, ChromeDriver pentru Chrome). Vestea bună? Acum e mai simplu ca oricând.

Instalează Selenium

Deschide terminalul și rulează:

pip install selenium

Obține un WebDriver

  • Chrome: descarcă ChromeDriver (asigură-te că se potrivește cu versiunea ta de Chrome).
  • Firefox: descarcă GeckoDriver.

Sfat util: Cu Selenium 4.6+, poți folosi Selenium Manager pentru a descărca automat driverele, așa că s-ar putea să nu mai fie nevoie nici să te complici cu variabilele PATH (documentație).

Primul tău script Selenium

Iată un „hello world” rapid pentru Selenium:

from selenium import webdriver

driver = webdriver.Chrome()  # Sau webdriver.Firefox()
driver.get("https://example.com")
print(driver.title)
driver.quit()

Sfaturi de depanare:

  • Dacă primești eroarea „driver not found”, verifică PATH-ul sau folosește Selenium Manager.
  • Asigură-te că versiunile browserului și driverului coincid.
  • Dacă rulezi pe un server headless (fără interfață grafică), vezi mai jos sfaturile pentru modul headless.

Pasul 2: Localizarea elementelor web pentru extragerea datelor

Acum vine partea interesantă: îi spui lui Selenium ce date vrei. Site-urile sunt construite din elemente — div-uri, span-uri, tabele, ce vrei tu — iar Selenium îți oferă mai multe moduri de a le găsi.

Strategii comune de localizare

  • By.ID: găsește un element cu un ID unic
  • By.CLASS_NAME: găsește elemente după clasa CSS
  • By.XPATH: folosește expresii XPath (foarte flexibil, dar poate fi fragil)
  • By.CSS_SELECTOR: folosește selectori CSS (excelent pentru interogări complexe)

Iată cum le-ai putea folosi:

from selenium.webdriver.common.by import By

# Găsește după ID
price = driver.find_element(By.ID, "price").text

# Găsește după XPath
title = driver.find_element(By.XPATH, "//h1").text

# Găsește toate imaginile produselor cu un selector CSS
images = driver.find_elements(By.CSS_SELECTOR, ".product img")
for img in images:
    print(img.get_attribute("src"))

Sfat util: Folosește întotdeauna cel mai simplu și mai stabil locator (ID > clasă > CSS > XPath). Și dacă extragi date de pe o pagină care le încarcă cu întârziere, folosește așteptări explicite:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 10)
price_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))

Asta împiedică scriptul să crape dacă datele apar cu o secundă mai târziu.

Pasul 3: Extragerea și salvarea datelor

După ce ai găsit elementele, e timpul să preiei datele și să le salvezi undeva util.

Extragerea textului, linkurilor și tabelelor

Să presupunem că extragi un tabel de produse:

data = []
rows = driver.find_elements(By.XPATH, "//table/tbody/tr")
for row in rows:
    cells = row.find_elements(By.TAG_NAME, "td")
    data.append([cell.text for cell in cells])

Salvarea în CSV cu Pandas

import pandas as pd

df = pd.DataFrame(data, columns=["Nume", "Preț", "Stoc"])
df.to_csv("products.csv", index=False)

Poți salva și în Excel (df.to_excel("products.xlsx")) sau chiar trimite datele în Google Sheets folosind API-ul lor.

Exemplu complet: extragerea titlurilor și prețurilor produselor

from selenium import webdriver
from selenium.webdriver.common.by import By
import pandas as pd

driver = webdriver.Chrome()
driver.get("https://example.com/products")

data = []
products = driver.find_elements(By.CLASS_NAME, "product-card")
for p in products:
    title = p.find_element(By.CLASS_NAME, "title").text
    price = p.find_element(By.CLASS_NAME, "price").text
    data.append([title, price])

driver.quit()

df = pd.DataFrame(data, columns=["Titlu", "Preț"])
df.to_csv("products.csv", index=False)

Selenium vs. BeautifulSoup și Scrapy: ce face Selenium unic?

selenium-vs-traditional-scrapers-comparison.png Să lămurim dezbaterea: când ar trebui să folosești Selenium și când este mai potrivit ceva precum BeautifulSoup sau Scrapy? Iată o comparație rapidă:

InstrumentCel mai potrivit pentruGestionează JavaScript?Viteză și consum de resurse
SeleniumSite-uri dinamice/interactiveDaMai lent, folosește mai multă memorie
BeautifulSoupExtracție simplă din HTML staticNuFoarte rapid, ușor
ScrapyCrawling de volum mare pe site-uri staticeLimitat*Foarte rapid, asincron, consum redus de RAM
ThunderbitScraping fără cod, pentru businessDa (AI)Rapid pentru sarcini mici/medii

*Scrapy poate gestiona o parte din conținutul dinamic cu pluginuri, dar nu acesta este punctul său forte (ScrapingBee).

Când să folosești Selenium:

  • Datele apar doar după clic, derulare sau autentificare
  • Trebuie să interacționezi cu ferestre pop-up, derulare infinită sau dashboarduri dinamice
  • Scraper-ele statice pur și simplu nu fac față

Când să folosești BeautifulSoup/Scrapy:

  • Datele sunt deja în HTML-ul inițial
  • Trebuie să extragi mii de pagini rapid
  • Vrei un consum minim de resurse

Iar dacă vrei să sari complet peste partea de cod, Thunderbit îți permite să extragi site-uri dinamice cu AI — trebuie doar să apeși „AI Suggest Fields” și să exporți în Sheets, Notion sau Airtable. (Mai multe despre asta mai jos.)

Cum să extragi orice site folosind AI Get Started Free

Automatizarea sarcinilor de web scraping cu Selenium și Python

Hai să fim sinceri: nimeni nu vrea să se trezească la 2 dimineața ca să pornească un script de scraping. Vestea bună este că poți automatiza joburile Selenium folosind instrumentele de programare din Python sau schedulerul sistemului de operare (cum ar fi cron pe Linux/Mac sau Task Scheduler pe Windows).

Folosind biblioteca schedule

import schedule
import time

def job():
    # Codul tău de scraping aici
    print("Se extrag datele...")

schedule.every().day.at("09:00").do(job)

while True:
    schedule.run_pending()
    time.sleep(1)

Sau cu Cron (Linux/Mac)

Adaugă asta în crontab pentru a rula la fiecare oră:

0 * * * * python /path/to/your_script.py

Sfaturi pentru automatizare:

  • Rulează Selenium în modul headless (vezi mai jos) ca să eviți ferestrele grafice.
  • Înregistrează erorile și trimite-ți alerte dacă ceva merge prost.
  • Închide întotdeauna browserul cu driver.quit() pentru a elibera resursele.

Creșterea eficienței: sfaturi pentru un scraping Selenium mai rapid și mai fiabil

Selenium este puternic, dar poate fi lent și consumator de resurse dacă nu ești atent. Iată cum să-l accelerezi și să eviți durerile de cap obișnuite:

1. Rulează în modul headless

Nu e nevoie să vezi cum Chrome se deschide și se închide de o sută de ori. Modul headless rulează browserul în fundal:

from selenium.webdriver.chrome.options import Options

opts = Options()
opts.headless = True
driver = webdriver.Chrome(options=opts)

2. Blochează imaginile și alt conținut inutil

De ce să încarci imagini dacă extragi doar text? Blochează-le ca să accelerezi încărcarea paginii:

prefs = {"profile.managed_default_content_settings.images": 2}
opts.add_experimental_option("prefs", prefs)

3. Folosește locatori eficienți

  • Preferă ID-urile sau selectori CSS simpli în locul XPath-urilor complicate.
  • Evită time.sleep() — folosește în schimb așteptări explicite (WebDriverWait).

4. Randomizează întârzierile

Adaugă pauze aleatorii ca să imiti navigarea umană și să eviți blocarea:

import random, time

time.sleep(random.uniform(1, 3))

5. Rotește user agent-urile și IP-urile (dacă e nevoie)

Dacă extragi mult, rotește șirul user agent și ia în calcul folosirea proxy-urilor pentru a evita măsurile simple anti-bot.

6. Gestionează sesiunile și erorile

  • Folosește blocuri try/except ca să gestionezi elegant elementele lipsă.
  • Înregistrează erorile și fă capturi de ecran pentru depanare.

Pentru mai multe sfaturi de optimizare, consultă ghidul BrowserStack.

Avansat: combinarea Selenium cu Thunderbit pentru export structurat de date

Aici lucrurile devin cu adevărat interesante — mai ales dacă vrei să economisești timp la curățarea și exportul datelor.

După ce ai extras date brute cu Selenium, poți folosi Thunderbit pentru a:

  • Detecta automat câmpurile: AI-ul Thunderbit poate citi paginile sau CSV-urile extrase și poate sugera nume de coloane („AI Suggest Fields”).
  • Extragerea subpaginilor: dacă ai o listă de URL-uri (de exemplu, pagini de produs), Thunderbit poate vizita fiecare pagină și îți poate îmbogăți tabelul cu mai multe detalii — fără cod suplimentar.
  • Îmbogățirea datelor: traduce, categorizează sau analizează datele din mers.
  • Export oriunde: export cu un singur clic în Google Sheets, Airtable, Notion, CSV sau Excel.

Exemplu de flux de lucru:

  1. Folosești Selenium pentru a extrage o listă de URL-uri și titluri de produse.
  2. Expotezi datele în CSV.
  3. Deschizi Thunderbit, imporți CSV-ul și lași AI-ul să sugereze câmpurile.
  4. Folosești extragerea subpaginilor din Thunderbit pentru a prelua mai multe detalii (cum ar fi imagini sau specificații) pentru fiecare URL de produs.
  5. Expotezi setul final de date structurate în Sheets sau Notion.

Această combinație economisește ore de curățare manuală și îți permite să te concentrezi pe analiză, nu pe încurcături cu date murdare. Pentru mai multe despre acest flux de lucru, vezi ghidul Thunderbit pentru Selenium.

Exportă datele Selenium cu AI Thunderbit

Cele mai bune practici și depanare pentru web scraping cu Selenium

Web scraping-ul e puțin ca pescuitul: uneori prinzi ceva mare, alteori te încurci în buruieni. Iată cum să-ți păstrezi scripturile fiabile — și etice:

Cele mai bune practici

  • Respectă robots.txt și termenii site-ului: verifică întotdeauna dacă scraping-ul este permis.
  • Limitează ritmul cererilor: nu supraîncărca serverele — adaugă întârzieri și urmărește erorile HTTP 429.
  • Folosește API-uri când există: dacă datele sunt publice prin API, folosește-l — e mai sigur și mai fiabil.
  • Extrage doar date publice: evită informațiile personale sau sensibile și fii atent la legislația privind confidențialitatea.
  • Gestionează pop-up-urile și CAPTCHA-urile: poți folosi Selenium pentru a închide ferestrele pop-up, dar fii atent cu CAPTCHA-urile — sunt greu de automatizat.
  • Randomizează user agent-urile și întârzierile: ajută la evitarea detectării și blocării.

Erori comune și soluții

EroareCe înseamnăCum o repari
NoSuchElementExceptionNu găsește elementulVerifică din nou locatorul; folosește așteptări
Erori de timeoutPagina sau elementul a durat prea multMărește timpul de așteptare; verifică viteza rețelei
Nepotrivire între driver și browserSelenium nu poate lansa browserulActualizează versiunile driverului și browserului
Prăbușiri de sesiuneBrowserul s-a închis pe neașteptateFolosește modul headless; gestionează resursele

Pentru mai multe sfaturi de depanare, vezi tutorialul Thunderbit pentru Selenium.

Concluzie și idei-cheie

Scraping-ul web dinamic nu mai este doar pentru dezvoltatorii hardcore. Cu Python și Selenium, poți automatiza orice browser, poți interacționa cu cele mai dificile site-uri pline de JavaScript și poți extrage datele de care are nevoie afacerea ta — fie pentru vânzări, cercetare sau doar din curiozitate. Ține minte:

  • Selenium este instrumentul ideal pentru site-uri dinamice, interactive.
  • Trei pași esențiali: configurare, localizare, extragere și salvare.
  • Automatizează scripturile pentru actualizări regulate ale datelor.
  • Optimizează pentru viteză și fiabilitate cu modul headless, așteptări inteligente și locatori eficienți.
  • Combină Selenium cu Thunderbit pentru structurare și export ușor al datelor — mai ales dacă vrei să scapi de durerile de cap din Excel.

Ești gata să încerci? Începe cu exemplele de cod de mai sus, iar când ești pregătit să duci scraping-ul la nivelul următor, încearcă Thunderbit pentru curățare și export instant, cu AI. Iar dacă vrei mai mult, aruncă un ochi pe blogul Thunderbit pentru analize aprofundate, tutoriale și noutăți despre automatizarea web.

Spor la scraping — și fie ca selectorii tăi să găsească mereu ce cauți.

Încearcă gratuit AI Web Scraper de la Thunderbit Get Started Free

Întrebări frecvente

1. De ce ar trebui să folosesc Selenium pentru web scraping în loc de BeautifulSoup sau Scrapy?
Selenium este ideal pentru extragerea datelor de pe site-uri dinamice, unde conținutul se încarcă după acțiuni ale utilizatorului sau după rularea JavaScript-ului. BeautifulSoup și Scrapy sunt mai rapide pentru HTML static, dar nu pot interacționa cu elemente dinamice și nici simula clicuri sau derulare.

2. Cum pot face scraper-ul meu Selenium să ruleze mai repede?
Folosește modul headless, blochează imaginile și resursele inutile, utilizează locatori eficienți și adaugă întârzieri aleatorii ca să mimezi navigarea umană. Vezi ghidul BrowserStack pentru mai multe sfaturi.

3. Pot programa sarcini de scraping Selenium să ruleze automat?
Da! Folosește biblioteca schedule din Python sau schedulerul sistemului tău (cron ori Task Scheduler) pentru a rula scripturile la intervale stabilite. Automatizarea ajută la menținerea datelor actualizate.

4. Care este cea mai bună metodă de a exporta datele extrase cu Selenium?
Folosește Pandas pentru a salva datele în CSV sau Excel. Pentru exporturi mai avansate (Google Sheets, Notion, Airtable), importă datele în Thunderbit și folosește funcțiile de export cu un singur clic.

5. Cum pot gestiona pop-up-urile și CAPTCHA-urile în Selenium?
Poți închide pop-up-urile localizând și apăsând pe butoanele lor de închidere. CAPTCHA-urile sunt mult mai dificile — dacă întâlnești așa ceva, ia în calcul o soluție manuală sau un serviciu de rezolvare CAPTCHA și respectă întotdeauna termenii site-ului.

Vrei să vezi mai multe tutoriale de scraping, sfaturi de automatizare AI sau cele mai noi instrumente pentru date de business? Abonează-te la blogul Thunderbit sau vizitează canalul nostru de YouTube pentru demonstrații practice.

Află mai multe

Shuai Guan
Shuai Guan
CEO la Thunderbit | Expert în automatizarea datelor cu AI Shuai Guan este CEO-ul Thunderbit și absolvent al University of Michigan, specializarea Engineering. Cu aproape un deceniu de experiență în tehnologie și arhitecturi SaaS, se concentrează pe transformarea modelelor AI complexe în instrumente practice de extragere a datelor, fără cod. Pe acest blog, împărtășește idei directe, testate în practică, despre web scraping și strategii de automatizare, pentru a te ajuta să construiești fluxuri de lucru mai inteligente, bazate pe date. Când nu optimizează fluxurile de lucru pentru date, aplică aceeași atenție la detalii și pasiunii sale pentru fotografie.
Topics
Scraping with seleniumSelenium web scraping tutorialPython selenium scrape website
Cuprins

Extrage o pagină web doar cerând

Spune ce ai nevoie în engleză simplă. Sau, și mai bine, nu spune nimic.

Încearcă Thunderbit gratuit
Extrage date folosind AI
Transferă ușor date în Google Sheets, Airtable sau Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week