Web scraping z Selenium: kompletny poradnik krok po kroku

Ostatnia aktualizacja: May 6, 2026
Step-by-step Python Selenium web scraping tutorial title slide with coding and web icons

Sieć nie wygląda już tak jak kiedyś. Dziś niemal każda strona, którą odwiedzasz, działa w oparciu o JavaScript i ładuje treści „w locie” — pomyśl o nieskończonym przewijaniu, wyskakujących okienkach i panelach, które zdradzają swoje sekrety dopiero po jednym czy dwóch kliknięciach. W praktyce aż 98,7% wszystkich stron internetowych korzysta teraz z JavaScript, więc stare narzędzia do scrapowania, które czytają tylko statyczny HTML, tracą mnóstwo cennych danych. Jeśli kiedykolwiek próbowałeś wyciągnąć ceny produktów z nowoczesnego sklepu internetowego albo pobrać ogłoszenia nieruchomości z interaktywnej mapy, dobrze znasz to uczucie frustracji: danych, których szukasz, po prostu nie ma w kodzie źródłowym.

I właśnie tu wchodzi scrapowanie z Selenium. Jako ktoś, kto od lat tworzy narzędzia automatyzujące pracę — i tak, niejedną stronę też już zeskrobał — mogę powiedzieć jedno: opanowanie Selenium to prawdziwa supermoc dla każdego, kto potrzebuje aktualnych, dynamicznych danych. W tym praktycznym poradniku pokażę Ci kluczowe kroki w web scrapingu z Selenium — od konfiguracji po automatyzację — oraz pokażę, jak połączyć Selenium z Thunderbit i uzyskać uporządkowane dane gotowe do eksportu. Niezależnie od tego, czy jesteś analitykiem biznesowym, handlowcem, czy po prostu ciekawym użytkownikiem Pythona, wyjdziesz stąd z praktycznymi umiejętnościami i kilkoma powodami do uśmiechu (bo umówmy się: debugowanie selektorów XPath potrafi hartować charakter).

Wypróbuj AI Web Scraper Thunderbit

Czym jest Selenium i dlaczego warto używać go do web scrapingu?

selenium-dynamic-vs-static-web-scraping.png Zacznijmy od podstaw. Selenium to framework open source, który pozwala sterować prawdziwą przeglądarką internetową — taką jak Chrome czy Firefox — za pomocą kodu. Pomyśl o nim jak o robocie, który potrafi otwierać strony, klikać przyciski, wypełniać formularze, przewijać i nawet uruchamiać JavaScript, dokładnie tak jak człowiek. To ogromna zaleta, bo większość nowoczesnych stron nie pokazuje wszystkich danych od razu. Zamiast tego ładują treści dynamicznie, często dopiero po Twojej interakcji ze stroną.

Czym jest data scraping i jak robić to w 2026 roku Get Started Free

Dlaczego ma to znaczenie w scrapingu? Tradycyjne narzędzia, takie jak BeautifulSoup czy Scrapy, świetnie radzą sobie ze statycznym HTML-em, ale nie potrafią „zobaczyć” niczego, co zostało doładowane przez JavaScript po wczytaniu strony. Selenium z kolei może wchodzić w interakcję ze stroną w czasie rzeczywistym, dlatego świetnie sprawdza się do:

  • scrapowania list produktów, które pojawiają się dopiero po kliknięciu „Załaduj więcej”
  • pobierania cen lub opinii, które aktualizują się dynamicznie
  • przechodzenia przez formularze logowania, wyskakujące okienka lub nieskończone przewijanie
  • wyciągania danych z paneli, map i innych elementów interaktywnych

Krótko mówiąc: Selenium to narzędzie pierwszego wyboru, gdy chcesz pobrać dane, które pojawiają się dopiero po pełnym załadowaniu strony — albo po wykonaniu akcji przez użytkownika.

Kluczowe kroki w Python Selenium Web Scraping

Scraping z Selenium sprowadza się do trzech podstawowych etapów:

KrokCo robiszDlaczego to ważne
1. Konfiguracja środowiskaInstalujesz Selenium, WebDriver i biblioteki PythonaPrzygotowujesz narzędzia i unikasz problemów z konfiguracją
2. Lokalizacja elementówWyszukujesz dane za pomocą ID, klas, XPath itd.Trafiasz w odpowiednią informację, nawet jeśli ukrywa ją JavaScript
3. Ekstrakcja i zapis danychPobierasz tekst, linki lub tabele i zapisujesz je do CSV/ExcelZamieniasz surowe dane z sieci w coś, z czego możesz korzystać

Przyjrzyjmy się każdemu z tych kroków na praktycznych przykładach i kodzie, który możesz skopiować, dostosować i pochwalić się nim przed znajomymi.

Krok 1: Konfiguracja środowiska Python Selenium

Najpierw najważniejsze: musisz zainstalować Selenium i sterownik przeglądarki, np. ChromeDriver dla Chrome. Dobra wiadomość? Nigdy nie było to prostsze.

Instalacja Selenium

Otwórz terminal i uruchom:

pip install selenium

Pobranie WebDrivera

Wskazówka pro: W Selenium 4.6+ możesz użyć Selenium Managera do automatycznego pobierania sterowników, więc być może nie będziesz już musiał ręcznie ustawiać zmiennych PATH (dokumentacja).

Twój pierwszy skrypt Selenium

Oto szybki „hello world” dla Selenium:

from selenium import webdriver

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

Wskazówki do rozwiązywania problemów:

  • Jeśli pojawi się błąd „driver not found”, sprawdź PATH albo użyj Selenium Managera.
  • Upewnij się, że wersje przeglądarki i sterownika są zgodne.
  • Jeśli pracujesz na serwerze headless (bez GUI), sprawdź niżej wskazówki dotyczące trybu headless.

Krok 2: Lokalizowanie elementów strony do ekstrakcji danych

Teraz najciekawsza część: wskazanie Selenium, jakich danych potrzebujesz. Strony internetowe składają się z elementów — divów, spanów, tabel i wszystkiego pomiędzy — a Selenium daje Ci kilka sposobów ich odnajdywania.

Najczęstsze strategie lokalizowania elementów

  • By.ID: znajdowanie elementu z unikalnym ID
  • By.CLASS_NAME: znajdowanie elementów po klasie CSS
  • By.XPATH: używanie wyrażeń XPath (bardzo elastyczne, ale potrafią być kruche)
  • By.CSS_SELECTOR: używanie selektorów CSS (świetne do bardziej złożonych zapytań)

Tak możesz ich używać:

from selenium.webdriver.common.by import By

# Znajdź po ID
price = driver.find_element(By.ID, "price").text

# Znajdź po XPath
title = driver.find_element(By.XPATH, "//h1").text

# Znajdź wszystkie obrazy produktów po selektorze CSS
images = driver.find_elements(By.CSS_SELECTOR, ".product img")
for img in images:
    print(img.get_attribute("src"))

Wskazówka pro: Zawsze używaj najprostszego i najbardziej stabilnego selektora (ID > klasa > CSS > XPath). A jeśli scrapujesz stronę, która ładuje dane z opóźnieniem, używaj jawnych oczekiwań:

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

Dzięki temu skrypt nie wywali się, jeśli dane pojawią się dopiero po chwili.

Krok 3: Ekstrakcja i zapisywanie danych

Gdy już znajdziesz elementy, czas pobrać dane i zapisać je w przydatnym miejscu.

Pobieranie tekstu, linków i tabel

Załóżmy, że scrapujesz tabelę produktów:

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

Zapis do CSV z Pandas

import pandas as pd

df = pd.DataFrame(data, columns=["Nazwa", "Cena", "Stan magazynowy"])
df.to_csv("products.csv", index=False)

Możesz też zapisać dane do Excela (df.to_excel("products.xlsx")) albo nawet przesłać je do Google Sheets przez API.

Pełny przykład: scrapowanie tytułów i cen produktów

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=["Tytuł", "Cena"])
df.to_csv("products.csv", index=False)

Selenium vs. BeautifulSoup i Scrapy: co wyróżnia Selenium?

selenium-vs-traditional-scrapers-comparison.png Rozstrzygnijmy to jasno: kiedy warto użyć Selenium, a kiedy lepiej sprawdzi się coś takiego jak BeautifulSoup albo Scrapy? Oto szybkie porównanie:

NarzędzieNajlepsze doObsługuje JavaScript?Szybkość i zużycie zasobów
SeleniumStrony dynamiczne i interaktywneTakWolniejsze, zużywa więcej pamięci
BeautifulSoupProsty scraping statycznego HTMLNieBardzo szybkie, lekkie
ScrapyCrawling dużej liczby stron statycznychOgraniczenie*Bardzo szybkie, asynchroniczne, mało RAM
ThunderbitScrapowanie bez kodu dla biznesuTak (AI)Szybkie przy małych i średnich zadaniach

*Scrapy może obsługiwać część dynamicznych treści dzięki wtyczkom, ale nie jest to jego najmocniejsza strona (ScrapingBee).

Kiedy użyć Selenium:

  • Dane pojawiają się dopiero po kliknięciu, przewinięciu lub zalogowaniu
  • Musisz wchodzić w interakcję z pop-upami, nieskończonym przewijaniem lub dynamicznymi panelami
  • Statyczne scrapery po prostu nie dają rady

Kiedy użyć BeautifulSoup/Scrapy:

  • Dane są już w początkowym HTML-u
  • Musisz szybko zeskrobać tysiące stron
  • Zależy Ci na minimalnym zużyciu zasobów

A jeśli chcesz całkiem pominąć kodowanie, Thunderbit pozwala scrapować dynamiczne strony z pomocą AI — wystarczy kliknąć „AI Suggest Fields” i wyeksportować dane do Sheets, Notion albo Airtable. (Więcej o tym poniżej.)

Jak zeskrobać dowolną stronę internetową z użyciem AI Get Started Free

Automatyzacja zadań web scrapingu z Selenium i Pythonem

Bądźmy szczerzy: nikt nie chce budzić się o 2:00 w nocy, żeby uruchamiać skrypt do scrapowania. Dobra wiadomość jest taka, że możesz zautomatyzować zadania Selenium, korzystając z narzędzi harmonogramu w Pythonie albo z harmonogramu systemowego (np. cron w Linux/Mac lub Task Scheduler w Windows).

Użycie biblioteki schedule

import schedule
import time

def job():
    # Twój kod scrapujący tutaj
    print("Scrapuję...")

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

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

Albo z Cronem (Linux/Mac)

Dodaj tę linię do crontaba, aby uruchamiać skrypt co godzinę:

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

Wskazówki dotyczące automatyzacji:

  • Uruchamiaj Selenium w trybie headless (patrz niżej), aby uniknąć wyskakujących okien GUI.
  • Loguj błędy i wysyłaj sobie alerty, jeśli coś pójdzie nie tak.
  • Zawsze zamykaj przeglądarkę przez driver.quit(), aby zwolnić zasoby.

Zwiększanie wydajności: jak przyspieszyć i ustabilizować scraping z Selenium

Selenium jest potężne, ale może być wolne i zasobożerne, jeśli nie używasz go ostrożnie. Oto jak przyspieszyć działanie i uniknąć typowych problemów:

1. Uruchamiaj w trybie headless

Nie musisz patrzeć, jak Chrome otwiera się i zamyka sto razy. Tryb headless uruchamia przeglądarkę w tle:

from selenium.webdriver.chrome.options import Options

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

2. Blokuj obrazy i inne niepotrzebne treści

Po co ładować obrazy, jeśli scrapujesz tylko tekst? Zablokuj je, aby przyspieszyć ładowanie strony:

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

3. Używaj wydajnych selektorów

  • Preferuj ID albo proste selektory CSS zamiast złożonych XPathów.
  • Unikaj time.sleep() — zamiast tego używaj jawnych oczekiwań (WebDriverWait).

4. Losuj opóźnienia

Dodawaj losowe pauzy, aby imitować ludzkie przeglądanie i uniknąć blokady:

import random, time

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

5. Rotuj user agent i adresy IP (jeśli trzeba)

Jeśli scrapujesz dużo, rotuj ciąg user agenta i rozważ użycie proxy, aby uniknąć prostych zabezpieczeń antybotowych.

6. Zarządzaj sesjami i błędami

  • Używaj bloków try/except, aby elegancko obsługiwać brakujące elementy.
  • Loguj błędy i rób zrzuty ekranu do debugowania.

Więcej wskazówek optymalizacyjnych znajdziesz w przewodniku BrowserStack.

Zaawansowane: połączenie Selenium z Thunderbit do eksportu uporządkowanych danych

Tu robi się naprawdę ciekawie — zwłaszcza jeśli chcesz zaoszczędzić czas na czyszczeniu i eksporcie danych.

Po zebraniu surowych danych z Selenium możesz użyć Thunderbit do:

  • Automatycznego wykrywania pól: AI Thunderbit może odczytać zeskrobaną stronę lub pliki CSV i zaproponować nazwy kolumn („AI Suggest Fields”).
  • Scrapowania podstron: Jeśli masz listę adresów URL (np. stron produktów), Thunderbit może odwiedzić każdy z nich i wzbogacić tabelę o dodatkowe szczegóły — bez dodatkowego kodu.
  • Wzbogacania danych: Tłumaczenie, kategoryzowanie lub analiza danych na bieżąco.
  • Eksportu gdzie chcesz: Jednym kliknięciem do Google Sheets, Airtable, Notion, CSV lub Excela.

Przykład workflow:

  1. Użyj Selenium, aby zeskrobać listę adresów URL produktów i ich tytuły.
  2. Wyeksportuj dane do CSV.
  3. Otwórz Thunderbit, zaimportuj CSV i pozwól AI zasugerować pola.
  4. Użyj scrapowania podstron w Thunderbit, aby pobrać więcej szczegółów (np. obrazy lub specyfikacje) z każdego URL produktu.
  5. Wyeksportuj końcowy, uporządkowany zestaw danych do Sheets lub Notion.

To połączenie oszczędza godziny ręcznego porządkowania danych i pozwala skupić się na analizie, a nie na walce z chaosem. Więcej o tym workflow znajdziesz w przewodniku Thunderbit o Selenium.

Eksportuj dane z Selenium z Thunderbit AI

Najlepsze praktyki i rozwiązywanie problemów w Selenium Web Scraping

Web scraping jest trochę jak łowienie ryb: czasem trafisz na dużą sztukę, a czasem zaplączesz się w wodorosty. Oto jak utrzymać skrypty w dobrej formie — i działać etycznie:

Najlepsze praktyki

  • Szanuj robots.txt i regulamin strony: Zawsze sprawdź, czy scrapowanie jest dozwolone.
  • Ograniczaj tempo żądań: Nie przeciążaj serwerów — dodawaj opóźnienia i obserwuj błędy HTTP 429.
  • Korzystaj z API, gdy są dostępne: Jeśli dane są publicznie dostępne przez API, użyj go — to bezpieczniejsze i bardziej niezawodne.
  • Scrapuj tylko dane publiczne: Unikaj danych osobowych i wrażliwych oraz pamiętaj o przepisach dotyczących prywatności.
  • Obsługuj pop-upy i CAPTCHA: Używaj Selenium do zamykania wyskakujących okienek, ale z CAPTCHA zachowaj ostrożność — ich automatyzacja jest trudna.
  • Losuj user agenty i opóźnienia: Pomaga to uniknąć wykrycia i blokad.

Najczęstsze błędy i poprawki

BłądCo oznaczaJak to naprawić
NoSuchElementExceptionNie można znaleźć elementuSprawdź selektor; użyj oczekiwań
Błędy timeoutuStrona lub element ładował się zbyt długoZwiększ czas oczekiwania; sprawdź prędkość sieci
Niezgodność drivera i przeglądarkiSelenium nie może uruchomić przeglądarkiZaktualizuj wersję drivera i przeglądarki
Awaria sesjiPrzeglądarka zamknęła się niespodziewanieUżyj trybu headless; zarządzaj zasobami

Więcej wskazówek dotyczących rozwiązywania problemów znajdziesz w poradniku Thunderbit o Selenium.

Podsumowanie i najważniejsze wnioski

Dynamiczny web scraping nie jest już tylko domeną hardkorowych deweloperów. Z Selenium w Pythonie możesz automatyzować dowolną przeglądarkę, wchodzić w interakcję z najtrudniejszymi, opartymi na JavaScript stronami i wyciągać dane potrzebne Twojemu biznesowi — niezależnie od tego, czy chodzi o sprzedaż, badania, czy po prostu zaspokojenie ciekawości. Pamiętaj:

  • Selenium to narzędzie z wyboru do stron dynamicznych i interaktywnych.
  • Trzy kluczowe kroki: konfiguracja, lokalizacja, ekstrakcja i zapis.
  • Automatyzuj skrypty, aby regularnie aktualizować dane.
  • Optymalizuj pod kątem szybkości i niezawodności dzięki trybowi headless, inteligentnym oczekiwaniom i wydajnym selektorom.
  • Połącz Selenium z Thunderbit, aby łatwo strukturyzować i eksportować dane — szczególnie jeśli chcesz ominąć ból głowy związany z arkuszami.

Gotowy, by spróbować sam? Zacznij od przykładów kodu powyżej, a gdy będziesz gotowy wejść na wyższy poziom scrapingu, wypróbuj Thunderbit do natychmiastowego, opartego na AI czyszczenia i eksportu danych. A jeśli chcesz więcej, zajrzyj na blog Thunderbit po pogłębione analizy, poradniki i najnowsze informacje o automatyzacji sieci.

Udanych zbiorów danych — niech Twoje selektory zawsze znajdują to, czego szukasz.

Wypróbuj AI Web Scraper Thunderbit za darmo Get Started Free

FAQ

1. Dlaczego powinienem używać Selenium do web scrapingu zamiast BeautifulSoup lub Scrapy?
Selenium jest idealne do scrapowania dynamicznych stron, gdzie treść ładuje się po działaniach użytkownika albo po wykonaniu JavaScriptu. BeautifulSoup i Scrapy są szybsze przy statycznym HTML-u, ale nie potrafią wchodzić w interakcję z dynamicznymi elementami ani symulować kliknięć i przewijania.

2. Jak przyspieszyć scraper Selenium?
Użyj trybu headless, blokuj obrazy i niepotrzebne zasoby, stosuj wydajne selektory i dodawaj losowe opóźnienia, aby imitować ludzkie przeglądanie. Więcej wskazówek znajdziesz w przewodniku BrowserStack.

3. Czy mogę zaplanować zadania scrapowania Selenium tak, aby uruchamiały się automatycznie?
Tak! Użyj biblioteki Pythona schedule albo harmonogramu systemowego (cron lub Task Scheduler), aby uruchamiać skrypty w określonych odstępach czasu. Automatyzacja pomaga utrzymywać dane na bieżąco.

4. Jaki jest najlepszy sposób eksportu danych zebranych przez Selenium?
Użyj Pandas, aby zapisać dane do CSV lub Excela. W przypadku bardziej zaawansowanych eksportów (Google Sheets, Notion, Airtable) zaimportuj dane do Thunderbit i skorzystaj z eksportu jednym kliknięciem.

5. Jak radzić sobie z pop-upami i CAPTCHA w Selenium?
Pop-upy możesz zamykać, lokalizując i klikając ich przyciski zamykania. CAPTCHA są znacznie trudniejsze — jeśli się pojawią, rozważ ręczne obejście lub usługę do rozwiązywania CAPTCHA i zawsze przestrzegaj regulaminu strony.

Chcesz zobaczyć więcej poradników o scrapingu, wskazówek dotyczących automatyzacji AI albo najnowszych narzędzi do danych biznesowych? Zapisz się na blog Thunderbit albo zajrzyj na nasz kanał YouTube, gdzie znajdziesz praktyczne demonstracje.

Dowiedz się więcej

Shuai Guan
Shuai Guan
CEO w Thunderbit | Ekspert ds. automatyzacji danych AI Shuai Guan jest CEO Thunderbit oraz absolwentem wydziału inżynierii University of Michigan. Czerpiąc z niemal dekady doświadczenia w branży technologicznej i architekturze SaaS, specjalizuje się w przekuwaniu złożonych modeli AI w praktyczne, niewymagające kodowania narzędzia do استخراج danych. Na tym blogu dzieli się szczerymi, sprawdzonymi w boju spostrzeżeniami na temat web scrapingu i strategii automatyzacji, które pomogą Ci tworzyć mądrzejsze, oparte na danych procesy pracy. Gdy nie optymalizuje przepływów danych, z tą samą dbałością o szczegóły oddaje się swojej pasji do fotografii.
Topics
Narzędzia do Web ScrapingAI Web Scraper
Spis treści
Thunderbit · Agent AI do danych z internetu

Wyciągaj dane z dowolnej strony w 1 klik

Zaufało nam ponad 250 000 użytkowników
dostępny darmowy plan
Od strony do arkusza kalkulacyjnego
Opisz, czego potrzebujesz — Agent AI Thunderbit zbierze to i wyeksportuje do Excela, Google Sheets, Airtable lub Notion. Start jest darmowy.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week