Lektion 4 12 Min.

Web Scraping mit Python

Extrahiere Daten von Websites mit Python — requests und BeautifulSoup für statische Seiten, Paginierung und ethisches Scraping unter Beachtung der DSGVO.

🔄 Kurzer Rückblick: In der letzten Lektion hast du Datenverarbeitung mit pandas automatisiert — Spreadsheets lesen, bereinigen und transformieren. Jetzt holen wir uns Daten direkt aus dem Web: Informationen von Websites extrahieren, wenn keine API oder kein Download verfügbar ist.

Web Scraping verwandelt unstrukturierte Webseiten in strukturierte Daten. Preismonitoring, Stellenanzeigen-Aggregation, News-Tracking, Wettbewerbsanalyse — wenn die Daten auf einer Webseite stehen, kann Python sie extrahieren.

Der Scraping-Stack

pip install requests beautifulsoup4 lxml
LibraryZweck
requestsWebseiten herunterladen (HTTP-Requests)
BeautifulSoupHTML parsen und Daten extrahieren
lxmlSchneller HTML-Parser (von BeautifulSoup genutzt)

Skript 1: Einfacher Seiten-Scraper

KI-Prompt:

Schreib einen Python-Web-Scraper mit requests und BeautifulSoup: (1) Webseite von einer URL abrufen, (2) Alle Produktnamen und Preise extrahieren (Produkte in Elementen mit Klasse „product", h2 für Name, span.price für Preis), (3) Als CSV speichern mit Spalten: name, preis, url, scraping_datum, (4) Behandeln: HTTP-Fehler, Verbindungs-Timeouts, fehlende Elemente. Ordentliche Headers mit User-Agent-String.

Core BeautifulSoup-Operationen:

OperationCodeWas es tut
Ein Element findensoup.find("h2", class_="title")Erstes passendes Element
Alle Elemente findensoup.find_all("div", class_="product")Alle passenden Elemente
Text holenelement.get_text(strip=True)Textinhalt, Whitespace entfernt
Attribut holenelement["href"]HTML-Attributwert
CSS-Selektorsoup.select("div.product h2")CSS-Selektor-Syntax

DSGVO und Web Scraping: Was du in Deutschland wissen musst

In Deutschland gelten beim Scraping strengere Regeln als in den USA. Die DSGVO setzt klare Grenzen:

AspektRegelKonsequenz
Personenbezogene DatenDürfen nicht ohne Rechtsgrundlage erhoben werdenNamen, E-Mails, Profile → DSGVO-relevant
robots.txtTechnisch unverbindlich, aber juristisch relevantMissachtung kann als Verstoß gewertet werden
UrheberrechtDatenbankrichtlinie der EU schützt DatensammlungenGanze Produktkataloge scrapen kann Urheberrecht verletzen
AGB/NutzungsbedingungenVertragliche RegelungVerstoß kann abmahnfähig sein

Faustregel: Öffentliche, nicht-personenbezogene Sachdaten (Preise, Wetter, Fahrpläne) sind in der Regel okay. Personenbezogene Daten und geschützte Datenbanken: Finger weg ohne Rechtsgrundlage.

Ethisches Scraping

PraxisWarumWie
robots.txt prüfenSites geben an, was erlaubt istrequests.get(url + "/robots.txt")
Rate Limits respektierenServer nicht überlastentime.sleep(random.uniform(1, 3))
Identifiziere dichSeitenbetreiber kann dich kontaktierenUser-Agent: MeinProjekt (email@example.com)
Responses cachenGleiche Seite nicht nochmal anfragenHTML lokal speichern, vor Request prüfen
Nach API suchenAPIs sind zuverlässiger und erlaubtEntwickler-Docs der Website prüfen

Quick Check: Du scrapst eine Seite, aber requests.get() liefert HTML ohne die Daten, die du im Browser siehst. Die Seite lädt Daten per JavaScript nach dem initialen HTML. Was brauchst du? (Antwort: Für JavaScript-gerenderte Seiten reicht requests + BeautifulSoup nicht, weil sie nur das initiale HTML vor JavaScript-Ausführung sehen. Optionen: (1) Prüfe ob das JavaScript Daten von einer API lädt — Browser-DevTools Netzwerk-Tab nach dem API-Endpunkt suchen, dann direkt mit requests aufrufen. Das ist der beste Ansatz. (2) Selenium oder Playwright nutzen, um die Seite mit einem echten Browser zu rendern.)

Key Takeaways

  • Immer ethisch scrapen: robots.txt prüfen, Pausen zwischen Requests (1-3 Sekunden), ehrlichen User-Agent setzen und zuerst nach einer API schauen — aggressives Scraping führt zu IP-Sperren und kann gegen Nutzungsbedingungen verstoßen
  • In Deutschland gilt die DSGVO auch beim Scraping: personenbezogene Daten nicht ohne Rechtsgrundlage erheben, Datenbankrechte der EU beachten, und im Zweifel die AGB der Website lesen
  • KI glänzt beim mühsamsten Teil des Scrapings — CSS-Selektoren finden: HTML in die KI einfügen, beschreiben welche Daten du brauchst, und die KI identifiziert die exakten Selektoren

Up Next

In der nächsten Lektion lernst du API-Integration — direkte Verbindung zu Webdiensten (kein HTML-Parsing nötig) für zuverlässigere Datenautomatisierung.

Wissenscheck

1. Du scrapst Produktpreise aus einem Onlineshop, um Preisänderungen zu tracken. Dein Skript schickt 1.000 Requests in schneller Folge. Die Website sperrt deine IP nach 50 Requests. Was ist schiefgelaufen?

2. Dein Scraper zielt auf div.product-card h2.title. Heute funktioniert er, nächste Woche liefert er leere Ergebnisse. Was ist passiert?

3. Eine Website hat Produktdaten auf 50 Seiten (Paginierung). Jede Seite zeigt 20 Produkte. Du brauchst alle 1.000. Bester Ansatz?

Beantworte alle Fragen zum Prüfen

Erst das Quiz oben abschließen

Passende Skills