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?
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:
| Krok | Co robisz | Dlaczego to ważne |
|---|---|---|
| 1. Konfiguracja środowiska | Instalujesz Selenium, WebDriver i biblioteki Pythona | Przygotowujesz narzędzia i unikasz problemów z konfiguracją |
| 2. Lokalizacja elementów | Wyszukujesz dane za pomocą ID, klas, XPath itd. | Trafiasz w odpowiednią informację, nawet jeśli ukrywa ją JavaScript |
| 3. Ekstrakcja i zapis danych | Pobierasz tekst, linki lub tabele i zapisujesz je do CSV/Excel | Zamieniasz 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
- Chrome: Pobierz ChromeDriver (upewnij się, że pasuje do wersji Chrome).
- Firefox: Pobierz GeckoDriver.
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 IDBy.CLASS_NAME: znajdowanie elementów po klasie CSSBy.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?
Rozstrzygnijmy to jasno: kiedy warto użyć Selenium, a kiedy lepiej sprawdzi się coś takiego jak BeautifulSoup albo Scrapy? Oto szybkie porównanie:
| Narzędzie | Najlepsze do | Obsługuje JavaScript? | Szybkość i zużycie zasobów |
|---|---|---|---|
| Selenium | Strony dynamiczne i interaktywne | Tak | Wolniejsze, zużywa więcej pamięci |
| BeautifulSoup | Prosty scraping statycznego HTML | Nie | Bardzo szybkie, lekkie |
| Scrapy | Crawling dużej liczby stron statycznych | Ograniczenie* | Bardzo szybkie, asynchroniczne, mało RAM |
| Thunderbit | Scrapowanie bez kodu dla biznesu | Tak (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:
- Użyj Selenium, aby zeskrobać listę adresów URL produktów i ich tytuły.
- Wyeksportuj dane do CSV.
- Otwórz Thunderbit, zaimportuj CSV i pozwól AI zasugerować pola.
- Użyj scrapowania podstron w Thunderbit, aby pobrać więcej szczegółów (np. obrazy lub specyfikacje) z każdego URL produktu.
- 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łąd | Co oznacza | Jak to naprawić |
|---|---|---|
NoSuchElementException | Nie można znaleźć elementu | Sprawdź selektor; użyj oczekiwań |
| Błędy timeoutu | Strona lub element ładował się zbyt długo | Zwiększ czas oczekiwania; sprawdź prędkość sieci |
| Niezgodność drivera i przeglądarki | Selenium nie może uruchomić przeglądarki | Zaktualizuj wersję drivera i przeglądarki |
| Awaria sesji | Przeglądarka zamknęła się niespodziewanie | Uż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


