Python Web Scraping: Das umfassende Handbuch für 2025

Zuletzt aktualisiert am June 16, 2025

Lass mich dich mal mitnehmen zu meinem allerersten Versuch, Geschäftsdaten von einer Webseite zu ziehen. Ich saß damals am Küchentisch, in der einen Hand eine Tasse Kaffee, in der anderen ein halb funktionierendes Python-Skript, und wollte Produktpreise von einer Konkurrenzseite abgreifen. Mein Gedanke: „Wie schwer kann das schon sein?“ Kleiner Spoiler: Am Ende hatte ich eine CSV-Datei voller leerer Felder – und plötzlich riesigen Respekt vor allen, die behaupten, „das kann man easy mit Python automatisieren“. Spulen wir vor ins Jahr 2025: Web-Scraping ist heute das Rückgrat datengetriebener Firmen – es liefert Sales-, E-Commerce-, Marketing- und Operations-Teams Einblicke in Echtzeit, die manuell einfach nicht zu schaffen wären.

Aber hier kommt der Haken: Auch wenn Python-Web-Scraping heute mächtiger ist als je zuvor, hat sich das Spielfeld verändert. Der Markt für Web-Scraping boomt – . Fast , um bessere Entscheidungen zu treffen. Die eigentliche Herausforderung ist aber nicht das Coden selbst – sondern das richtige Tool zu wählen, zu skalieren und nicht im Wartungschaos von Skripten zu versinken. In diesem ultimativen Guide zeige ich dir alle wichtigen Python-Web-Scraping-Bibliotheken (mit Codebeispielen), echte Business-Anwendungsfälle und warum ich – trotz meiner Liebe zu Python – überzeugt bin, dass No-Code-Lösungen wie für die meisten Unternehmen 2025 die beste Wahl sind.

Was ist Python Web Scraping? Einfach erklärt

Kurz gesagt: Web-Scraping ist nichts anderes als automatisiertes Copy-Paste. Anstatt ein Heer von Praktikant:innen loszuschicken, um Produktpreise, Kontaktlisten oder Bewertungen zu sammeln, übernimmt Software diesen Job: Sie besucht Webseiten, zieht die gewünschten Daten raus und speichert sie in einer Tabelle oder Datenbank. Python Web-Scraping heißt, dass du dafür Python-Skripte nutzt – um Webseiten abzurufen, HTML zu analysieren und gezielt die Infos rauszufiltern, die du brauchst.

Stell dir das wie einen digitalen Assistenten vor, der rund um die Uhr für dich im Netz recherchiert – ohne Pause. Die am häufigsten gesammelten Datentypen? Preise, Produktdetails, Kontakte, Bewertungen, Bilder, Nachrichtenartikel und sogar Immobilienanzeigen. Manche Seiten bieten dafür APIs an, aber die meisten eben nicht – oder sie schränken den Zugriff stark ein. Genau hier kommt Web-Scraping ins Spiel: Es ermöglicht dir, öffentlich verfügbare Daten im großen Stil zu nutzen, auch wenn es keinen offiziellen „Download“-Button gibt.

Warum Python Web Scraping für Unternehmen ein Muss ist

Hand aufs Herz: Wer 2025 als Unternehmen kein Web-Scraping nutzt, lässt bares Geld liegen. Warum?

web-scraping-benefits-funnel.png

  • Manuelle Datenerfassung automatisieren: Nie wieder stundenlanges Copy-Paste von Wettbewerberseiten oder Online-Verzeichnissen.
  • Echtzeit-Einblicke: Aktuelle Preise, Lagerbestände oder Markttrends sofort abrufen.
  • Skalierbarkeit: Tausende Seiten in der Zeit auslesen, in der du dein Mittagessen aufwärmst.
  • Mehrwert: Unternehmen, die datengetrieben arbeiten, erzielen .

Hier ein Überblick über die wichtigsten Anwendungsfälle:

AbteilungBeispiel-AnwendungNutzen
VertriebLeads aus Verzeichnissen extrahieren, mit E-Mails anreichernGrößere, gezieltere Lead-Listen
MarketingWettbewerberpreise, Aktionen, Bewertungen verfolgenKlügere Kampagnen, schnellere Reaktionen
E-CommerceProduktpreise, Lagerbestand, Bewertungen überwachenDynamische Preisgestaltung, Bestandswarnungen
OperationsLieferantendaten bündeln, Berichte automatisierenZeitersparnis, weniger Fehler
ImmobilienImmobilienanzeigen von mehreren Portalen sammelnMehr Angebote, schnellere Kundenreaktion

Fazit: Web-Scraping ist das Geheimrezept für schnellere, bessere und wettbewerbsfähigere Geschäftsentscheidungen.

Überblick: Die wichtigsten Python Web Scraping Bibliotheken (mit Codebeispielen)

Wie versprochen, hier der komplette Rundgang. Das Python-Ökosystem für Web-Scraping ist riesig – es gibt für jeden Bedarf das passende Tool, von einfachen Seitenabrufen bis hin zu komplexer Browser-Automatisierung. Hier die wichtigsten Tools, jeweils mit Beispielcode:

urllib und urllib3: Die Basics für HTTP-Anfragen

Das sind Pythons Bordmittel für HTTP-Requests. Sie sind recht grundlegend, etwas sperrig, aber für einfache Aufgaben absolut solide.

1import urllib3, urllib3.util
2http = urllib3.PoolManager()
3headers = urllib3.util.make_headers(user_agent="MyBot/1.0")
4response = http.request('GET', "<https://httpbin.org/json>", headers=headers)
5print(response.status)        # HTTP-Statuscode
6print(response.data[:100])    # erste 100 Bytes des Inhalts

Ideal, wenn du keine zusätzlichen Abhängigkeiten willst oder maximale Kontrolle brauchst. Für die meisten Aufgaben empfiehlt sich aber requests.

requests: Die beliebteste Python Web Scraping Bibliothek

Wenn es ein Maskottchen für Python-Scraping gäbe, wäre es requests. Einfach, leistungsstark und nimmt dir die ganze HTTP-Arbeit ab.

1import requests
2r = requests.get("<https://httpbin.org/json>", headers={"User-Agent": "MyBot/1.0"})
3print(r.status_code)      # 200
4print(r.json())           # geparster JSON-Inhalt (falls Antwort JSON war)

Warum so beliebt? Es kümmert sich um Cookies, Sessions, Weiterleitungen und mehr – du konzentrierst dich nur auf die Daten. Aber: requests holt nur das HTML. Um Daten zu extrahieren, brauchst du einen Parser wie BeautifulSoup.

BeautifulSoup: Einfache HTML-Analyse und Datenauslese

BeautifulSoup ist der Standard für HTML-Parsing in Python. Fehlertolerant, einsteigerfreundlich und perfekt in Kombination mit requests.

1from bs4 import BeautifulSoup
2html = "<div class='product'><h2>Widget</h2><span class='price'>$19.99</span></div>"
3soup = BeautifulSoup(html, 'html.parser')
4title = soup.find('h2').text               # "Widget"
5price = soup.find('span', class_='price').text  # "$19.99"

Ideal für kleine bis mittlere Projekte oder den Einstieg. Für große Datenmengen oder komplexe Abfragen empfiehlt sich lxml.

lxml und XPath: Schnelles, leistungsstarkes HTML/XML-Parsing

Wenn du Geschwindigkeit brauchst oder XPath nutzen möchtest (eine Abfragesprache für XML/HTML), ist lxml die richtige Wahl.

1from lxml import html
2doc = html.fromstring(page_content)
3prices = doc.xpath("//span[@class='price']/text()")

Mit XPath greifst du gezielt auf Daten zu. lxml ist schnell und effizient, aber etwas anspruchsvoller als BeautifulSoup.

Scrapy: Das Framework für großflächiges Web Crawling

Scrapy ist der Platzhirsch für große Scraping-Projekte. Ein komplettes Framework – quasi das Django fürs Web-Scraping.

1import scrapy
2class QuotesSpider(scrapy.Spider):
3    name = "quotes"
4    start_urls = ["<http://quotes.toscrape.com/>"]
5    def parse(self, response):
6        for quote in response.css("div.quote"):
7            yield {
8                "text": quote.css("span.text::text").get(),
9                "author": quote.css("small.author::text").get(),
10            }

Scrapy verarbeitet asynchrone Anfragen, folgt Links, verwaltet Pipelines und exportiert Daten in verschiedene Formate. Für kleine Skripte zu viel, aber unschlagbar für das Crawlen tausender Seiten.

Selenium, Playwright und Pyppeteer: Scraping dynamischer Webseiten

Wenn eine Seite Daten per JavaScript nachlädt, brauchst du Browser-Automatisierung. Selenium und Playwright sind hier die Platzhirsche.

Selenium Beispiel:

1from selenium import webdriver
2from selenium.webdriver.common.by import By
3driver = webdriver.Chrome()
4driver.get("<https://example.com/login>")
5driver.find_element(By.NAME, "username").send_keys("user123")
6driver.find_element(By.NAME, "password").send_keys("secret")
7driver.find_element(By.ID, "submit-btn").click()
8titles = [el.text for el in driver.find_elements(By.CLASS_NAME, "product-title")]

Playwright Beispiel:

1from playwright.sync_api import sync_playwright
2with sync_playwright() as p:
3    browser = p.chromium.launch(headless=True)
4    page = browser.new_page()
5    page.goto("<https://website.com>")
6    page.wait_for_selector(".item")
7    data = page.eval_on_selector(".item", "el => el.textContent")

Diese Tools können alles, was ein Mensch im Browser kann – sind aber langsamer und ressourcenintensiver als reines HTTP-Scraping. Nutze sie nur, wenn es wirklich nötig ist.

MechanicalSoup, RoboBrowser, PyQuery, Requests-HTML: Weitere nützliche Tools

  • MechanicalSoup: Automatisiert Formulare und Navigation, basiert auf Requests und BeautifulSoup.

    1import mechanicalsoup
    2browser = mechanicalsoup.StatefulBrowser()
    3browser.open("<http://example.com/login>")
    4browser.select_form('form#loginForm')
    5browser["username"] = "user123"
    6browser["password"] = "secret"
    7browser.submit_selected()
    8page = browser.get_current_page()
    9print(page.title.text)
  • RoboBrowser: Ähnlich wie MechanicalSoup, aber weniger gepflegt.

  • PyQuery: jQuery-ähnliches HTML-Parsing.

    1from pyquery import PyQuery as pq
    2doc = pq("<div><p class='title'>Hello</p><p>World</p></div>")
    3print(doc("p.title").text())      # "Hello"
    4print(doc("p").eq(1).text())      # "World"
  • Requests-HTML: Kombiniert HTTP-Anfragen, Parsing und sogar JavaScript-Rendering.

    1from requests_html import HTMLSession
    2session = HTMLSession()
    3r = session.get("<https://example.com>")
    4r.html.render(timeout=20)
    5links = [a.text for a in r.html.find("a.story-link")]

Ideal, wenn du Formulare, CSS-Selektoren oder leichtes JS-Rendering brauchst.

Asyncio und Aiohttp: Python Web Scraping beschleunigen

Für das Scrapen von hunderten oder tausenden Seiten sind synchrone Anfragen zu langsam. Mit aiohttp und asyncio geht es parallel und deutlich schneller.

1import aiohttp, asyncio
2async def fetch_page(session, url):
3    async with session.get(url) as resp:
4        return await resp.text()
5async def fetch_all(urls):
6    async with aiohttp.ClientSession() as session:
7        tasks = [fetch_page(session, url) for url in urls]
8        return await asyncio.gather(*tasks)
9urls = ["<https://example.com/page1>", "<https://example.com/page2>"]
10html_pages = asyncio.run(fetch_all(urls))

So kannst du Dutzende Seiten gleichzeitig abrufen und sparst enorm Zeit.

Spezialisierte Bibliotheken: PRAW (Reddit), PyPDF2 und mehr

  • PRAW: Für das Scrapen von Reddit über die API.

    1import praw
    2reddit = praw.Reddit(client_id='XXX', client_secret='YYY', user_agent='myapp')
    3for submission in reddit.subreddit("learnpython").hot(limit=5):
    4    print(submission.title, submission.score)
  • PyPDF2: Um Text aus PDFs zu extrahieren.

    1from PyPDF2 import PdfReader
    2reader = PdfReader("sample.pdf")
    3num_pages = len(reader.pages)
    4text = reader.pages[0].extract_text()
  • Weitere: Es gibt Bibliotheken für Instagram, Twitter, OCR (Tesseract) und vieles mehr. Für fast jede Datenquelle gibt es eine Python-Lösung.

Vergleichstabelle: Python Scraping Bibliotheken

Tool / BibliothekBenutzerfreundlichkeitGeschwindigkeit & SkalierungIdeal für
Requests + BeautifulSoupEinfachMittelEinsteiger, statische Seiten, schnelle Skripte
lxml (mit XPath)MittelSchnellGroße Datenmengen, komplexe Abfragen
ScrapyAnspruchsvollSehr schnellUnternehmen, große Crawls, Pipelines
Selenium / PlaywrightMittelLangsamJavaScript-lastige, interaktive Seiten
aiohttp + asyncioMittelSehr schnellHohe Volumen, meist statische Seiten
MechanicalSoupEinfachMittelLogins, Formulare, Session-Handling
PyQueryMittelSchnellCSS-Selektor-Fans, DOM-Manipulation
Requests-HTMLEinfachVariabelKleine Aufgaben, leichtes JS-Rendering

Schritt-für-Schritt-Anleitung: So baust du einen Python Web-Scraper (mit Beispielen)

Gehen wir ein Praxisbeispiel durch: Produktlisten von einer (fiktiven) E-Commerce-Seite scrapen, Paginierung handhaben und als CSV exportieren.

1import requests
2from bs4 import BeautifulSoup
3import csv
4base_url = "<https://example.com/products>"
5page_num = 1
6all_products = []
7while True:
8    url = base_url if page_num == 1 else f"{base_url}/page/{page_num}"
9    print(f"Scraping page: {url}")
10    response = requests.get(url, timeout=10)
11    if response.status_code != 200:
12        print(f"Page {page_num} returned status {response.status_code}, stopping.")
13        break
14    soup = BeautifulSoup(response.text, 'html.parser')
15    products = soup.find_all('div', class_='product-item')
16    if not products:
17        print("No more products found, stopping.")
18        break
19    for prod in products:
20        name_tag = prod.find('h2', class_='product-title')
21        price_tag = prod.find('span', class_='price')
22        name = name_tag.get_text(strip=True) if name_tag else "N/A"
23        price = price_tag.get_text(strip=True) if price_tag else "N/A"
24        all_products.append((name, price))
25    page_num += 1
26print(f"Collected {len(all_products)} products. Saving to CSV...")
27with open('products_data.csv', 'w', newline='', encoding='utf-8') as f:
28    writer = csv.writer(f)
29    writer.writerow(["Product Name", "Price"])
30    writer.writerows(all_products)
31print("Data saved to products_data.csv")

Was passiert hier?

  • Das Skript geht die Seiten durch, holt das HTML, liest Produkte aus, sammelt Name und Preis und stoppt, wenn keine Produkte mehr gefunden werden.
  • Die Ergebnisse werden als CSV für die weitere Analyse exportiert.

Du willst lieber nach Excel exportieren? Nutze pandas:

1import pandas as pd
2df = pd.DataFrame(all_products, columns=["Product Name", "Price"])
3df.to_excel("products_data.xlsx", index=False)

Formulare, Logins und Sessions beim Python Web Scraping meistern

Viele Seiten verlangen einen Login oder Formularausfüllung. So klappt’s:

Mit requests und Session:

1session = requests.Session()
2login_data = {"username": "user123", "password": "secret"}
3session.post("<https://targetsite.com/login>", data=login_data)
4resp = session.get("<https://targetsite.com/account/orders>")

Mit MechanicalSoup:

1import mechanicalsoup
2browser = mechanicalsoup.StatefulBrowser()
3browser.open("<http://example.com/login>")
4browser.select_form('form#login')
5browser["user"] = "user123"
6browser["pass"] = "secret"
7browser.submit_selected()

Sessions sorgen dafür, dass du eingeloggt bleibst und Cookies erhältst, während du mehrere Seiten scrapest.

Dynamische Inhalte und JavaScript-generierte Seiten scrapen

Wenn die Daten nicht im HTML stehen (Seitenquelltext zeigt leere divs), brauchst du Browser-Automatisierung.

Selenium Beispiel:

1from selenium.webdriver.support.ui import WebDriverWait
2from selenium.webdriver.support import expected_conditions as EC
3driver.get("<http://examplesite.com/dashboard>")
4WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'stats-table')))
5html = driver.page_source

Oder, wenn du die API findest, die das JavaScript nutzt, kannst du mit requests direkt das JSON holen – das ist viel schneller.

Export von gescrapten Daten: CSV, Excel, Datenbanken und mehr

  • CSV: Mit Pythons csv-Modul (siehe oben).

  • Excel: Mit pandas oder openpyxl.

  • Google Sheets: Mit der gspread-Bibliothek.

    1import gspread
    2gc = gspread.service_account(filename="credentials.json")
    3sh = gc.open("My Data Sheet")
    4worksheet = sh.sheet1
    5worksheet.clear()
    6worksheet.append_row(["Name", "Price"])
    7for name, price in all_products:
    8    worksheet.append_row([name, price])
  • Datenbanken: Mit sqlite3, pymysql, psycopg2 oder SQLAlchemy für SQL-Datenbanken. Für NoSQL z.B. pymongo für MongoDB.

Python Web Scraping vs. moderne No-Code-Lösungen: Warum Thunderbit 2025 die beste Wahl ist

thunderbit-vs-diy-scraping-comparison-2025.png

Kommen wir zum Elefanten im Raum: Wartung. Eigene Scraper zu programmieren ist super – bis du 100 verschiedene Seiten mit jeweils eigenen Tücken scrapen musst und alles am Abend vor der Deadline plötzlich nicht mehr funktioniert. Ich spreche aus Erfahrung.

Deshalb bin ich ein großer Fan von . Das sind die Gründe, warum es für Business-Anwender:innen 2025 meine Top-Empfehlung ist:

  1. Kein Programmieren nötig: Thunderbit bietet eine visuelle Oberfläche. „KI-Felder vorschlagen“ anklicken, Spalten anpassen, auf „Scrapen“ drücken – fertig. Kein Python, kein Debugging, keine Stack Overflow-Nächte.
  2. Skaliert auf tausende Seiten: Du willst 10.000 Produktlisten extrahieren? Thunderbits Cloud-Engine schafft das – ohne dass du ein Skript überwachen musst.
  3. Null Wartungsaufwand: Wer 100 Wettbewerberseiten für E-Commerce analysiert, will keine 100 Python-Skripte pflegen. Mit Thunderbit wählst du einfach eine Vorlage, und die KI passt sich automatisch an Layout-Änderungen an.
  4. Unterstützt Unterseiten und Paginierung: Thunderbit folgt Links zu Unterseiten, verarbeitet Paginierung und kann sogar Daten anreichern, indem es jede Produktdetailseite besucht.
  5. Sofort-Vorlagen: Für bekannte Seiten (Amazon, Zillow, LinkedIn usw.) gibt es fertige Templates. Ein Klick – und du hast deine Daten.
  6. Kostenloser Datenexport: Exportiere nach Excel, Google Sheets, Airtable oder Notion – ohne Zusatzkosten.

Kurz gesagt: Wer als Business-Anwender:in einfach nur Daten will, bekommt mit Thunderbit einen persönlichen Daten-Butler. Wer als Entwickler:in gerne tüftelt, bleibt bei Python – aber auch dann will man manchmal einfach nur Ergebnisse.

Best Practices für ethisches und legales Python Web Scraping

ethical-and-legal-web-scraping-best-practices.png

Web-Scraping ist mächtig, bringt aber Verantwortung mit sich. So bleibst du auf der sicheren Seite:

  • robots.txt beachten: Respektiere, was die Seite zum Scraping erlaubt.
  • AGB lesen: Manche Seiten verbieten Scraping ausdrücklich. Verstöße können zu Sperrungen oder rechtlichen Konsequenzen führen.
  • Anfragen begrenzen: Server nicht überlasten – Pausen zwischen den Requests einbauen.
  • Keine personenbezogenen Daten: Vorsicht beim Scrapen von E-Mails, Telefonnummern oder anderen sensiblen Daten (Stichwort DSGVO/CCPA).
  • Anti-Bot-Maßnahmen nicht umgehen: Wenn eine Seite CAPTCHAs oder starke Blockaden nutzt, lieber zweimal überlegen.
  • Quellen angeben: Bei Veröffentlichungen immer die Datenquelle nennen.

Mehr zum rechtlichen Rahmen findest du in dieser und zu .

Ressourcen für mehr Python Web Scraping Know-how (Kurse, Dokus, Communities)

Du willst tiefer einsteigen? Hier meine Favoriten:

  • Offizielle Dokumentationen:
  • Bücher:
    • „Web Scraping mit Python“ von Ryan Mitchell
    • „Automate the Boring Stuff with Python“ von Al Sweigart
  • Online-Guides:
  • Video-Tutorials:
    • Corey Schafer’s YouTube-Kanal
  • Communities:

Und natürlich: Wer No-Code-Scraping in Aktion sehen will, schaut am besten auf dem oder im vorbei.

Fazit & wichtigste Erkenntnisse: Die richtige Web Scraping Lösung 2025 wählen

  • Python Web-Scraping ist extrem leistungsfähig und flexibel. Wer gerne programmiert, volle Kontrolle will und Wartung nicht scheut, ist damit bestens bedient.
  • Für jeden Scraping-Bedarf gibt es eine Python-Bibliothek – egal ob statische Seiten, dynamische Inhalte, Formulare, APIs oder PDFs.
  • Für die meisten Unternehmen ist die Wartung vieler Skripte aber mühsam. Wer Daten schnell, skalierbar und ohne Informatikstudium braucht, fährt mit am besten.
  • Thunderbits KI-gestützte No-Code-Oberfläche ermöglicht es, jede Website mit wenigen Klicks zu scrapen, Unterseiten und Paginierung zu verarbeiten und die Daten flexibel zu exportieren – ganz ohne Python.
  • Ethik und Recht sind wichtig: Immer die Regeln der Seite prüfen, Datenschutz respektieren und verantwortungsvoll scrapen.

Egal ob du Python-Profi bist oder einfach nur Daten ohne Stress willst – die Tools sind 2025 besser als je zuvor. Mein Tipp: Probier beide Ansätze aus, finde deinen Workflow und lass die Roboter die langweilige Arbeit machen – aber bitte fair.

Und wenn du genug von kaputten Skripten hast, probier die aus. Dein zukünftiges Ich (und dein Kaffeekonsum) werden es dir danken.

Mehr dazu? Lies oder für praktische Anleitungen und die neuesten Scraping-Strategien.

KI-Web-Scraper ausprobieren
Shuai Guan
Shuai Guan
Co-founder/CEO @ Thunderbit. Passionate about cross section of AI and Automation. He's a big advocate of automation and loves making it more accessible to everyone. Beyond tech, he channels his creativity through a passion for photography, capturing stories one picture at a time.
Topics
Python Web ScrapingWeb Scraping mit PythonWeb Scraping ServicesData Scraping
Thunderbit ausprobieren
Mit KI Webseiten ohne Aufwand scrapen.
Kostenlose Version verfügbar
Deutsch wird unterstützt
Inhaltsverzeichnis
Daten mit KI extrahieren
Übertrage Daten ganz einfach nach Google Sheets, Airtable oder Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week