Das Web hat sich in den letzten Jahren komplett gewandelt. Fast jede Seite setzt heute auf JavaScript, um Inhalte dynamisch nachzuladen – denk mal an unendliches Scrollen, nervige Pop-ups oder Dashboards, die erst nach einem Klick ihre Daten zeigen. Tatsächlich nutzen inzwischen , was bedeutet: Mit klassischen Scraping-Tools, die nur statisches HTML auslesen, verpasst du eine Menge wertvoller Infos. Wer schon mal versucht hat, Produktpreise von einer modernen E-Commerce-Seite zu holen oder Immobilienanzeigen von einer interaktiven Karte zu sammeln, kennt das Problem: Die gesuchten Daten tauchen im Quelltext einfach nicht auf.
Genau hier kommt scraping mit selenium ins Spiel. Nach vielen Jahren in der Automatisierung (und unzähligen gescrapten Seiten) kann ich sagen: Wenn du aktuelle, dynamische Daten brauchst, ist Selenium ein echter Joker. In diesem praxisnahen selenium web scraping tutorial zeige ich dir Schritt für Schritt, wie du von der Einrichtung bis zur Automatisierung alles meisterst – und wie du Selenium mit kombinierst, um strukturierte, exportfertige Daten zu bekommen. Egal ob du Business-Analyst, im Vertrieb oder einfach neugieriger Python-Fan bist: Du nimmst praktische Skills mit – und vielleicht auch ein Lächeln, denn das Debuggen von XPath-Selektoren kann echt Nerven kosten, aber macht dich definitiv besser.
Was ist Selenium und warum eignet es sich fürs Web Scraping?
Fangen wir mit den Basics an. ist ein Open-Source-Framework, mit dem du einen echten Browser – wie Chrome oder Firefox – per Code steuern kannst. Stell dir Selenium wie einen Roboter vor, der Webseiten öffnet, Buttons klickt, Formulare ausfüllt, scrollt und sogar JavaScript ausführt – genau wie ein Mensch. Das ist entscheidend, denn die meisten modernen Seiten zeigen ihre Daten nicht direkt an, sondern laden sie erst nach Interaktionen nach.
Warum ist das fürs Scraping wichtig? Tools wie BeautifulSoup oder Scrapy sind super für statisches HTML, aber sie „sehen“ keine Inhalte, die erst nach dem Laden per JavaScript erscheinen. Selenium dagegen kann mit der Seite interagieren und ist daher ideal für:
- Produktlisten, die erst nach Klick auf „Mehr laden“ erscheinen
- Preise oder Bewertungen, die sich dynamisch aktualisieren
- Navigation durch Login-Formulare, Pop-ups oder endloses Scrollen
- Daten aus Dashboards, Karten oder anderen interaktiven Elementen
Kurz gesagt: Selenium ist immer dann die richtige Wahl, wenn du Daten extrahieren willst, die erst nach dem Laden oder durch Nutzeraktionen sichtbar werden.
Die wichtigsten Schritte beim Web Scraping mit Python und Selenium
scraping mit selenium läuft im Grunde in drei Schritten ab:
| Schritt | Was du tust | Warum es wichtig ist |
|---|---|---|
| 1. Umgebung einrichten | Selenium, WebDriver und Python-Bibliotheken installieren | Damit alles reibungslos läuft und du keine Setup-Probleme hast |
| 2. Elemente finden | Die gewünschten Daten per ID, Klasse, XPath etc. lokalisieren | Damit du gezielt die richtigen Infos extrahierst, auch wenn sie versteckt sind |
| 3. Daten extrahieren & speichern | Texte, Links oder Tabellen auslesen und als CSV/Excel sichern | So werden Rohdaten zu nutzbaren Informationen |
Schauen wir uns jeden Schritt mit praktischen Beispielen und Code zum Nachmachen an.
Schritt 1: Python-Selenium-Umgebung einrichten
Zuerst musst du Selenium und einen passenden Browser-Treiber (z. B. ChromeDriver für Chrome) installieren. Gute Nachricht: Das geht heute super easy.
Selenium installieren
Öffne dein Terminal und gib ein:
1pip install selenium
WebDriver herunterladen
- Chrome: herunterladen (Version muss zu deinem Chrome passen).
- Firefox: herunterladen.
Tipp: Ab Selenium 4.6+ kannst du Selenium Manager nutzen, um Treiber automatisch herunterzuladen – das spart Ärger mit PATH-Variablen ().
Dein erstes Selenium-Skript
Ein einfaches „Hello World“ mit Selenium:
1from selenium import webdriver
2driver = webdriver.Chrome() # Oder webdriver.Firefox()
3driver.get("https://example.com")
4print(driver.title)
5driver.quit()
Fehlerbehebung:
- Bei „driver not found“-Fehler: PATH prüfen oder Selenium Manager nutzen.
- Browser- und Treiberversionen müssen zusammenpassen.
- Auf Servern ohne GUI: Headless-Modus verwenden (siehe unten).
Schritt 2: Web-Elemente für die Datenerfassung finden
Jetzt wird’s spannend: Du sagst Selenium, welche Daten du willst. Webseiten bestehen aus Elementen – divs, spans, Tabellen usw. – und Selenium bietet verschiedene Wege, diese zu finden.
Gängige Suchstrategien
By.ID: Element mit eindeutiger ID findenBy.CLASS_NAME: Nach CSS-Klasse suchenBy.XPATH: XPath-Ausdrücke nutzen (sehr flexibel, aber manchmal fehleranfällig)By.CSS_SELECTOR: CSS-Selektoren verwenden (ideal für komplexe Abfragen)
So funktioniert’s im Code:
1from selenium.webdriver.common.by import By
2# Nach ID suchen
3price = driver.find_element(By.ID, "price").text
4# Nach XPath suchen
5title = driver.find_element(By.XPATH, "//h1").text
6# Alle Produktbilder per CSS-Selektor finden
7images = driver.find_elements(By.CSS_SELECTOR, ".product img")
8for img in images:
9 print(img.get_attribute("src"))
Tipp: Nutze immer den stabilsten und einfachsten Locator (ID > Klasse > CSS > XPath). Wenn Daten erst mit Verzögerung erscheinen, helfen explizite Wartezeiten:
1from selenium.webdriver.support.ui import WebDriverWait
2from selenium.webdriver.support import expected_conditions as EC
3wait = WebDriverWait(driver, 10)
4price_elem = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".price")))
So verhinderst du Abstürze, wenn Daten etwas länger laden.
Schritt 3: Daten extrahieren und speichern
Sobald du die gewünschten Elemente gefunden hast, kannst du die Daten auslesen und speichern.
Texte, Links und Tabellen extrahieren
Beispiel: Du willst eine Produkttabelle scrapen:
1data = []
2rows = driver.find_elements(By.XPATH, "//table/tbody/tr")
3for row in rows:
4 cells = row.find_elements(By.TAG_NAME, "td")
5 data.append([cell.text for cell in cells])
Mit Pandas als CSV speichern
1import pandas as pd
2df = pd.DataFrame(data, columns=["Name", "Preis", "Bestand"])
3df.to_csv("produkte.csv", index=False)
Du kannst auch nach Excel exportieren (df.to_excel("produkte.xlsx")) oder die Daten per API direkt zu Google Sheets schicken.
Komplettes Beispiel: Produkt-Titel und Preise scrapen
1from selenium import webdriver
2from selenium.webdriver.common.by import By
3import pandas as pd
4driver = webdriver.Chrome()
5driver.get("https://example.com/products")
6data = []
7products = driver.find_elements(By.CLASS_NAME, "product-card")
8for p in products:
9 title = p.find_element(By.CLASS_NAME, "title").text
10 price = p.find_element(By.CLASS_NAME, "price").text
11 data.append([title, price])
12driver.quit()
13df = pd.DataFrame(data, columns=["Titel", "Preis"])
14df.to_csv("produkte.csv", index=False)
Selenium vs. BeautifulSoup und Scrapy: Was macht Selenium besonders?
Wann ist Selenium die beste Wahl – und wann reichen BeautifulSoup oder Scrapy? Hier ein schneller Vergleich:
| Tool | Ideal für | JavaScript-Unterstützung? | Geschwindigkeit & Ressourcen |
|---|---|---|---|
| Selenium | Dynamische/interaktive Seiten | Ja | Langsamer, braucht mehr RAM |
| BeautifulSoup | Einfaches statisches HTML | Nein | Sehr schnell, ressourcenschonend |
| Scrapy | Großes Crawling statischer Seiten | Eingeschränkt* | Extrem schnell, asynchron, wenig RAM |
| Thunderbit | No-Code, Business-Scraping | Ja (KI) | Schnell bei kleinen/mittleren Jobs |
*Scrapy kann mit Plugins etwas dynamischen Content verarbeiten, ist aber nicht darauf spezialisiert ().
Selenium ist ideal, wenn:
- Daten erst nach Klicks, Scrollen oder Login erscheinen
- Du mit Pop-ups, endlosem Scrollen oder Dashboards interagieren musst
- Statische Scraper nicht ausreichen
BeautifulSoup/Scrapy sind besser, wenn:
- Die Daten direkt im HTML stehen
- Du tausende Seiten schnell scrapen willst
- Du möglichst wenig Ressourcen verbrauchen möchtest
Und wenn du komplett ohne Code auskommen willst, kannst du mit dynamische Seiten per KI scrapen – einfach „KI-Felder vorschlagen“ klicken und nach Google Sheets, Notion oder Airtable exportieren. (Mehr dazu weiter unten.)
Web Scraping automatisieren mit Selenium und Python
Mal ehrlich: Niemand will nachts um 2 Uhr ein Scraping-Skript manuell starten. Zum Glück kannst du deine Selenium-Jobs mit Python-Tools oder dem Betriebssystem-Planer (z. B. cron unter Linux/Mac oder Aufgabenplanung unter Windows) automatisieren.
Mit der schedule-Bibliothek
1import schedule
2import time
3def job():
4 # Dein Scraping-Code hier
5 print("Scraping...")
6schedule.every().day.at("09:00").do(job)
7while True:
8 schedule.run_pending()
9 time.sleep(1)
Oder mit Cron (Linux/Mac)
Füge das deiner crontab hinzu, um das Skript stündlich auszuführen:
10 * * * * python /pfad/zu/deinem_script.py
Tipps für die Automatisierung:
- Selenium im Headless-Modus ausführen (siehe unten), um Pop-ups zu vermeiden.
- Fehler protokollieren und dich bei Problemen benachrichtigen lassen.
- Browser immer mit
driver.quit()schließen, um Ressourcen freizugeben.
Effizienter scrapen: Tipps für schnelleres und zuverlässigeres Selenium
Selenium ist mächtig, kann aber langsam und speicherhungrig werden. So holst du das Maximum raus:
1. Headless-Modus nutzen
Du musst nicht zuschauen, wie Chrome hundertmal öffnet und schließt. Im Headless-Modus läuft der Browser unsichtbar im Hintergrund:
1from selenium.webdriver.chrome.options import Options
2opts = Options()
3opts.headless = True
4driver = webdriver.Chrome(options=opts)
2. Bilder und unnötige Inhalte blockieren
Wenn du nur Text brauchst, blockiere Bilder – das beschleunigt das Laden:
1prefs = {"profile.managed_default_content_settings.images": 2}
2opts.add_experimental_option("prefs", prefs)
3. Effiziente Locator verwenden
- IDs oder einfache CSS-Selektoren sind schneller als komplexe XPaths.
- Vermeide
time.sleep()– nutze stattdessen explizite Wartezeiten (WebDriverWait).
4. Zufällige Pausen einbauen
Füge zufällige Wartezeiten ein, um menschliches Verhalten zu simulieren und Blockierungen zu vermeiden:
1import random, time
2time.sleep(random.uniform(1, 3))
5. User Agents und IPs rotieren (bei Bedarf)
Wenn du viel scrapen willst, wechsel regelmäßig den User Agent und nutze ggf. Proxies, um Anti-Bot-Maßnahmen zu umgehen.
6. Sitzungen und Fehler managen
- Mit try/except-Blöcken auf fehlende Elemente reagieren.
- Fehler protokollieren und Screenshots für die Fehlersuche machen.
Weitere Optimierungstipps findest du im .
Fortgeschritten: Selenium und Thunderbit für strukturierte Daten kombinieren
Jetzt wird’s richtig spannend – vor allem, wenn du dir die Nachbearbeitung und den Export erleichtern willst.
Nachdem du mit Selenium Rohdaten gesammelt hast, kannst du nutzen, um:
- Felder automatisch erkennen zu lassen: Die KI von Thunderbit liest deine gescrapten Seiten oder CSVs und schlägt passende Spaltennamen vor („KI-Felder vorschlagen“).
- Unterseiten scrapen: Hast du eine Liste von URLs (z. B. Produktseiten), besucht Thunderbit jede Seite und ergänzt deine Tabelle um weitere Details – ganz ohne Extra-Code.
- Daten anreichern: Übersetze, kategorisiere oder analysiere deine Daten direkt im Tool.
- Exportieren wohin du willst: Mit einem Klick nach Google Sheets, Airtable, Notion, CSV oder Excel exportieren.
Beispiel-Workflow:
- Mit Selenium eine Liste von Produkt-URLs und Titeln scrapen.
- Daten als CSV exportieren.
- CSV in Thunderbit importieren und KI-Felder vorschlagen lassen.
- Mit Thunderbits Unterseiten-Scraping weitere Details (z. B. Bilder, Spezifikationen) zu jeder Produkt-URL holen.
- Das finale, strukturierte Dataset nach Sheets oder Notion exportieren.
Diese Kombi spart dir stundenlange Nachbearbeitung und du kannst dich auf die Analyse statt auf Datenbereinigung konzentrieren. Mehr dazu im .
Best Practices und Fehlerbehebung beim Selenium Web Scraping
Web Scraping ist manchmal wie Angeln: Mal hast du Glück, mal hängst du im Gestrüpp. So bleiben deine Skripte zuverlässig – und rechtlich sauber:
Best Practices
- robots.txt und Nutzungsbedingungen beachten: Immer checken, ob Scraping erlaubt ist.
- Anfragen drosseln: Server nicht überlasten – Pausen einbauen und auf HTTP 429 achten.
- APIs nutzen, wenn verfügbar: Öffentliche APIs sind meist sicherer und stabiler.
- Nur öffentliche Daten scrapen: Keine sensiblen oder personenbezogenen Daten sammeln, Datenschutz beachten.
- Pop-ups und CAPTCHAs handhaben: Pop-ups per Selenium schließen, bei CAPTCHAs vorsichtig sein – die sind schwer zu automatisieren.
- User Agents und Pausen variieren: So vermeidest du Blockierungen.
Häufige Fehler und Lösungen
| Fehler | Bedeutung | Lösung |
|---|---|---|
NoSuchElementException | Element nicht gefunden | Locator prüfen, Wartezeiten nutzen |
| Timeout-Fehler | Seite/Element lädt zu langsam | Wartezeit erhöhen, Netzwerk prüfen |
| Treiber-/Browser-Mismatch | Selenium kann Browser nicht starten | Treiber und Browser aktualisieren |
| Sitzungsabstürze | Browser schließt unerwartet | Headless-Modus nutzen, Ressourcen managen |
Weitere Tipps zur Fehlerbehebung findest du im .
Fazit & wichtigste Erkenntnisse
Dynamisches Web Scraping ist längst nicht mehr nur was für Hardcore-Entwickler. Mit Python und Selenium kannst du jeden Browser automatisieren, selbst komplexe JavaScript-Seiten auslesen und die Daten holen, die du für dein Business brauchst – egal ob für Vertrieb, Recherche oder einfach aus Neugier. Merke dir:
- Selenium ist das Tool der Wahl für dynamische, interaktive Seiten.
- Die drei Schlüsselschritte: Einrichten, Elemente finden, Daten extrahieren & speichern.
- Automatisiere deine Skripte für regelmäßige Daten-Updates.
- Optimiere für Geschwindigkeit und Zuverlässigkeit mit Headless-Modus, klugen Wartezeiten und effizienten Locators.
- Kombiniere Selenium mit Thunderbit für einfache Datenstrukturierung und Export – besonders, wenn du dir die Tabellen-Nachbearbeitung sparen willst.
Bereit, es selbst auszuprobieren? Starte mit den obigen Codebeispielen und wenn du dein Scraping aufs nächste Level bringen willst, teste für sofortige, KI-gestützte Datenaufbereitung und Export. Und wenn du noch mehr wissen willst, schau im vorbei – dort findest du tiefergehende Anleitungen, Tutorials und die neuesten Trends rund um Web-Automatisierung.
Viel Erfolg beim Scrapen – und mögen deine Selektoren immer die richtigen Daten finden.
FAQs
1. Warum sollte ich Selenium fürs Web Scraping statt BeautifulSoup oder Scrapy nutzen?
Selenium ist perfekt für dynamische Webseiten, bei denen Inhalte erst nach Nutzeraktionen oder JavaScript erscheinen. BeautifulSoup und Scrapy sind schneller bei statischem HTML, können aber keine dynamischen Elemente oder Interaktionen abbilden.
2. Wie mache ich meinen Selenium-Scraper schneller?
Nutze den Headless-Modus, blockiere Bilder und unnötige Ressourcen, verwende effiziente Locators und baue zufällige Pausen ein, um menschliches Verhalten zu simulieren. Weitere Tipps findest du im .
3. Kann ich Selenium-Scraping-Aufgaben automatisch planen?
Klar! Mit der Python-Bibliothek schedule oder dem Betriebssystem-Planer (cron oder Aufgabenplanung) kannst du Skripte zu festen Zeiten ausführen lassen. So bleiben deine Daten immer aktuell.
4. Wie exportiere ich am besten Daten, die ich mit Selenium gescrapt habe?
Mit Pandas kannst du Daten als CSV oder Excel speichern. Für fortgeschrittene Exporte (Google Sheets, Notion, Airtable) importierst du deine Daten einfach in und nutzt die Exportfunktionen mit nur einem Klick.
5. Wie gehe ich mit Pop-ups und CAPTCHAs in Selenium um?
Pop-ups kannst du schließen, indem du deren Schließen-Button per Selenium anklickst. CAPTCHAs sind deutlich schwieriger – hier hilft oft nur ein manueller Workaround oder ein Captcha-Service. Beachte immer die Nutzungsbedingungen der Seite.
Du willst mehr Tutorials, KI-Automatisierungstipps oder aktuelle Infos zu Business-Daten-Tools? Abonniere den oder schau auf unserem für praxisnahe Demos vorbei.
Mehr erfahren