Latenode

Python Headless Browser: Die besten Bibliotheken für Automatisierung

Entdecken Sie die besten Python-Bibliotheken für die Headless-Browser-Automatisierung und vergleichen Sie ihre Stärken beim Web Scraping, Testen und bei der Ressourceneffizienz.

11 Min. Lesezeit
Illustration von Python-Bibliotheken für die Headless-Browser-Automatisierung

Headless Browser ermöglichen Ihnen die Automatisierung von Webaufgaben, ohne ein sichtbares Browserfenster anzuzeigen. Sie sind schneller, verbrauchen weniger Ressourcen und eignen sich hervorragend für Web Scraping, Tests und mehr. Python bietet mehrere Bibliotheken für die Headless-Browser-Automatisierung, die jeweils eigene Stärken haben:

  • Selenium (2004): Funktioniert mit mehreren Browsern, ausgereiftes Ökosystem, ideal für Legacy-Systeme.
  • Playwright (2020): Modern, mit Async-Unterstützung, schnell und ideal für moderne Web-Apps.
  • Pyppeteer (2017): Schlank, nur für Chromium, ideal für schnelle Skripte.
  • Requests-HTML: Einfach, schnell und besonders geeignet für das Scraping statischer Inhalte.

Schneller Vergleich

FunktionSeleniumPlaywrightPyppeteerRequests-HTML
BrowserunterstützungChrome, Firefox, IEChrome, Firefox, WebKitNur ChromiumChromium (für JS)
Async-UnterstützungNeinJaJaNein
RessourcenverbrauchHochMittelMittelNiedrig
Am besten geeignet fürLegacy-SystemeModerne Web-AppsSchnelle SkripteStatische Inhalte

Wenn Sie umfassende Browserunterstützung benötigen, ist Selenium die richtige Wahl. Für moderne Apps und bessere Performance ist Playwright besser geeignet. Pyppeteer ist ideal für schnelle Aufgaben, während Requests-HTML beim schlanken Scraping statischer Inhalte überzeugt. Wählen Sie die Bibliothek, die zu den Anforderungen Ihres Projekts passt.

Was ist ein Headless Browser? Wie führen Sie Headless Chrome aus?

1. Selenium

Selenium wurde erstmals 2004 eingeführt[2] und ist ein etabliertes Tool zur Browserautomatisierung. Es unterstützt mehrere Browser und bietet erweiterte Automatisierungsfunktionen.

Installation und Einrichtung

Installieren Sie zunächst Selenium mit pip:

pip install selenium

So richten Sie einen Headless-Chrome-Browser ein:

from selenium import webdriver
from selenium.webdriver.common.by import By

options = webdriver.ChromeOptions()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)

Browserunterstützung und Funktionen

Selenium 4 und neuere Versionen bieten automatische WebDriver-Verwaltung sowie Kompatibilität mit dem WebDriver-Protokoll und dem Chrome DevTools Protocol (CDP). Es unterstützt drei wichtige Browser im Headless-Modus, die jeweils eigene Stärken bieten:

BrowserHighlightsBester Anwendungsfall
ChromeSchnelle Ausführung, EntwicklertoolsAllgemeine Automatisierung, Web Scraping
FirefoxHoher Datenschutz, zuverlässiges RenderingSicherheitsorientierte Aufgaben
EdgeWindows-Integration, Chromium-BasisWindows-spezifische Automatisierung

Performance-Optimierung

Berücksichtigen Sie diese Strategien, um die Performance von Selenium zu verbessern:

  • Ressourcenverwaltung
    Deaktivieren Sie unnötige Ressourcen wie Bilder, legen Sie Timeouts für das Laden von Seiten fest und verwenden Sie dynamische Wartezeiten, um Verzögerungen zu reduzieren.

  • Effiziente Elementlokalisierung
    Verwenden Sie präzise Methoden zum Auffinden von Elementen, um schneller mit ihnen zu interagieren:

    element = driver.find_element(By.ID, "search-input")
    
  • Verwaltung von Browserinstanzen
    Verwalten Sie Browserinstanzen sorgfältig, um unnötigen Ressourcenverbrauch zu vermeiden:

    driver.set_page_load_timeout(30)
    driver.quit()  # Ressourcen bereinigen
    

Erweiterte Funktionen

Selenium bietet mehrere erweiterte Möglichkeiten:

  • Umgehung der Bot-Erkennung mit Tools wie Undetected ChromeDriver
  • Browserübergreifende Tests
  • Netzwerkkontrolle für eine tiefgreifendere Automatisierung
  • JavaScript-Ausführung für benutzerdefinierte Interaktionen

Auch wenn Selenium im Vergleich zu Tools wie Playwright mehr Einrichtung erfordern kann, machen seine umfassende Browserunterstützung und die Kompatibilität mit älteren Systemen, einschließlich Internet Explorer, es zu einer soliden Wahl für komplexe Automatisierungsprojekte. Sein ausgereiftes Ökosystem gewährleistet Zuverlässigkeit für eine Vielzahl von Anwendungsfällen.

2. Playwright

Playwright wurde von Microsoft entwickelt und bietet eine schnelle sowie zuverlässige Möglichkeit, Headless Browser zu automatisieren, indem es direkt mit dem Chrome DevTools Protocol kommuniziert.

Installation und Einrichtung

Installieren Sie zunächst Playwright mit pip und richten Sie die erforderlichen Browser-Binärdateien ein:

pip install playwright
playwright install  # Installiert Browser-Binärdateien

Hier ist ein Beispiel für ein grundlegendes Skript:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    # Fügen Sie hier Ihre Automatisierungsaufgaben hinzu
    browser.close()

Nach der Installation können Sie die Funktionen und die Performance von Playwright erkunden.

Performance und Funktionen

Playwright hebt sich durch eine effiziente WebSocket-basierte Kommunikation von den traditionellen Methoden von Selenium ab. In Performance-Tests absolvierte Playwright 100 Iterationen in 290,37 ms, verglichen mit 536,34 ms bei Selenium [1].

Zu den wichtigsten Funktionen gehören:

  • Automatisches Warten: Wartet automatisch, bis Elemente bereit sind, und reduziert damit den Bedarf an manuellen Timeouts.
  • Videoaufzeichnung: Integrierte Unterstützung zur Aufzeichnung von Debugging-Sitzungen.
  • Browserübergreifende Unterstützung: Funktioniert mit Chromium, Firefox und WebKit.
  • Isolierte Browserkontexte: Gewährleistet die Isolierung von Tests, indem Browsersitzungen getrennt werden.

Vergleich der Browserunterstützung

Hier ist ein schneller Überblick über die Unterstützung des Headless-Modus in Playwright:

BrowserHeadless-Modus
ChromiumStandardmäßig aktiviert
FirefoxUnterstützt
WebKitUnterstützt

Best Practices

Befolgen Sie diese Tipps, um Playwright optimal zu nutzen:

  • Integrierte Wartefunktionen nutzen

Statt Verzögerungen fest zu codieren, verwenden Sie das automatische Warten von Playwright:

# time.sleep() vermeiden
page.wait_for_selector('#element')
  • Browserkontexte verwenden

Browserkontexte bieten für jeden Test eine saubere Ausgangsbasis:

context = browser.new_context()
page = context.new_page()
# Aufgaben innerhalb dieses Kontexts ausführen
context.close()

Die korrekte Verwaltung von Browserinstanzen ist besonders in Umgebungen mit mehreren Threads wichtig.

Hinweise zu Threads

Da die API von Playwright nicht thread-sicher ist, benötigen Sie für jeden Thread eine separate Instanz [3]:

def thread_function():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        # Thread-spezifische Aufgaben ausführen
        browser.close()

Playwright eignet sich hervorragend für moderne Webautomatisierungsprojekte. Seine Debugging-Tools und der Code-Generator können Entwicklern im Vergleich zu älteren Frameworks Zeit sparen. Obwohl seine Community mit 116.000 GitHub-Repositories kleiner ist als die von Selenium mit 283.000 Repositories [1], weisen das schnelle Wachstum und die Unterstützung durch Microsoft auf eine vielversprechende Zukunft hin.

sbb-itb-23997f1

3. Pyppeteer

Pyppeteer ist ein inoffizieller Python-Port von Puppeteer, der für die Automatisierung Chromium-basierter Browser entwickelt wurde. Trotz seiner geringen Größe bietet es leistungsstarke Tools für die Webautomatisierung.

Installation und grundlegende Einrichtung

Für Pyppeteer benötigen Sie Python 3.6 oder neuer. Installieren Sie es mit den folgenden pip-Befehlen:

pip install pyppeteer
pyppeteer-install  # Lädt Chromium herunter (~150 MB)

Dieses einfache Skript demonstriert die asynchronen Funktionen:

import asyncio
from pyppeteer import launch

async def main():
    browser = await launch()
    page = await browser.newPage()
    await page.goto('https://example.com')
    await page.screenshot({'path': 'screenshot.png'})
    await browser.close()

asyncio.get_event_loop().run_until_complete(main())

Performance-Erkenntnisse

Tests zeigen, dass Pyppeteer bei kürzeren Skripten etwa 30 % schneller als Playwright läuft [5]. Sein asynchrones Design macht es zudem effizient bei der gleichzeitigen Verarbeitung mehrerer Aufgaben.

Wichtigste Funktionen und Einschränkungen

FunktionDetails
BrowserunterstützungNur Chromium
Async-UnterstützungIntegriert
JavaScript-RenderingVollständig unterstützt
SpeicherverbrauchGeringer als bei Selenium
InstallationsgrößeKompakt (~150 MB mit Chromium)
Browserübergreifende TestsNicht unterstützt

Tipps zur Performance-Optimierung

Um die Performance von Pyppeteer zu verbessern, sollten Sie dieselbe Browserinstanz für mehrere Aufgaben wiederverwenden, anstatt neue Instanzen zu starten:

browser = await launch()

for task in tasks:
    page = await browser.newPage()
    # Vorgänge ausführen
    await page.close()
await browser.close()

Dieser Ansatz kann den Overhead reduzieren und Ihre Skripte beschleunigen.

Fehlerbehandlung

Ein häufiges Problem ist der Fehler „Browser Closed Unexpectedly“, der oft durch fehlende Chromium-Abhängigkeiten verursacht wird [4]. Durch die Ausführung von pyppeteer-install stellen Sie sicher, dass alle erforderlichen Komponenten vorhanden sind.

„Pyppeteer ist ein Tool zur Automatisierung eines Chromium-Browsers mit Code. Es ermöglicht Python-Entwicklern JavaScript-Rendering-Funktionen, mit denen sie mit modernen Websites interagieren und menschliches Verhalten besser simulieren können.“ – ZenRows [4]

Da Pyppeteer nur Chromium unterstützt, eignet es sich am besten für Projekte, die auf Chrome-basiertes Web Scraping und Automatisierung ausgerichtet sind. Es ist eine ausgezeichnete Wahl, wenn browserübergreifende Tests keine Priorität haben.

4. Requests-HTML

Requests-HTML ist ein schlankes Tool für Web Scraping, das die Einfachheit von Requests mit leistungsstarken HTML-Parsing-Funktionen kombiniert. Es ist besonders schnell und effizient bei der Arbeit mit statischen Inhalten.

Installation und Einrichtung

Um Requests-HTML zu verwenden, benötigen Sie Python 3.6 oder neuer. Installieren Sie es mit:

pip install requests-html

Wenn Sie JavaScript-Rendering erstmals aktivieren, lädt die Bibliothek Chromium (150 MB) automatisch in Ihr Home-Verzeichnis (`/.pyppeteer/`) herunter.

Performance-Benchmarks

Requests-HTML übertrifft browserbasierte Tools wie Selenium in puncto Geschwindigkeit. Hier ist ein Vergleich aus aktuellen Tests [6]:

VorgangstypRequests-HTMLSelenium
API-Anfragen0,11 s ± 0,01 s5,16 s ± 0,04 s
Textextraktion0,28 s ± 0,01 s5,32 s ± 0,09 s

Diese Daten zeigen, wie stark Requests-HTML bei Aufgaben mit schnellen Antwortzeiten ist.

Wichtigste Funktionen und Möglichkeiten

Hier ist ein kurzes Beispiel für die Verwendung von Requests-HTML:

from requests_html import HTMLSession

session = HTMLSession()
r = session.get('https://example.com')

r.html.links           # Alle Links extrahieren
r.html.absolute_links  # Absolute URLs extrahieren

# JavaScript-Rendering aktivieren
r.html.render()        

Zu den herausragenden Funktionen gehören:

  • CSS-Selektoren (ähnlich wie jQuery)
  • XPath-Unterstützung
  • Automatische Verarbeitung von Weiterleitungen
  • Connection Pooling
  • Persistente Cookies
  • Simulierte User-Agent-Strings für mehr Flexibilität

Tipps zur Performance-Optimierung

Für die beste Performance sollten Sie:

  • JavaScript-Rendering begrenzen, um den Chromium-Overhead zu reduzieren.
  • Session-Objekte für mehrere Anfragen wiederverwenden.
  • CSS-Selektoren statt XPath für einfachere und schnellere Abfragen verwenden.

Einschränkungen und Anwendungsfälle

AspektDetails
JavaScript-UnterstützungVerfügbar, muss jedoch explizit aktiviert werden
SpeicherverbrauchNiedrig bei statischen Inhalten; höher mit JS-Rendering
AuthentifizierungErfordert manuelle Einrichtung
CAPTCHA-VerarbeitungEingeschränkte Funktionalität

„Verwenden Sie requests, wenn Sie eine schnelle, schlanke und zuverlässige Möglichkeit benötigen, statische Webinhalte oder API-Daten abzurufen.“ – Joseph McGuire [6]

Requests-HTML ist ideal für Aufgaben, bei denen Geschwindigkeit und Ressourceneffizienz entscheidend sind. Das Scraping statischer Webseiten dauert beispielsweise nur Millisekunden, verglichen mit mehreren Sekunden bei Tools wie Selenium [6].

Ressourcenoptimierung

Requests-HTML minimiert die Bandbreitennutzung, indem nur die von Ihnen angeforderten Ressourcen geladen werden. Das kann die Proxy-Kosten für Projekte, die auf bandbreitenbasierten Preismodellen beruhen, erheblich senken [7]. Das effiziente Design beschleunigt nicht nur die Ausführung, sondern reduziert auch den Ressourcenverbrauch.

Für Projekte mit Fokus auf statische Inhalte bietet Requests-HTML im Vergleich zu umfangreicheren Tools für die Browserautomatisierung eine schlanke und effiziente Lösung. Damit ist es eine starke Wahl in Workflows, in denen Geschwindigkeit und Ressourceneinsparungen Priorität haben.

Vergleichstabelle der Bibliotheken

Hier finden Sie einen detaillierten Vergleich von Python-Bibliotheken für Headless Browser anhand ihrer Funktionen, Performance und Ressourceneffizienz.

Kernfunktionen und Möglichkeiten

FunktionSeleniumPlaywrightPyppeteerRequests-HTML
BrowserunterstützungChrome, Firefox, Safari, IEChrome, Firefox, WebKitNur ChromiumChromium (für JS)
JavaScript-UnterstützungVollständigVollständigVollständigEingeschränkt
Async-UnterstützungNeinJaJaNein
InstallationsaufwandHoch (WebDriver erforderlich)MittelMittelNiedrig
RessourcenverbrauchHochMittelMittelNiedrig
Größe der Community283.000+ Repositories116.000+ RepositoriesMittelgroßKlein

Diese Funktionen geben einen Überblick über die Stärken und Einschränkungen jeder Bibliothek und bilden die Grundlage für die weitere Analyse.

Performance-Benchmarks

Benchmark-Tests verdeutlichen zentrale Performance-Unterschiede [1][5]:

VorgangPlaywrightSeleniumPyppeteer
Ausführungszeit290,37 ms536,34 ms~203 ms
RessourcenintensitätMittelHochMittel
SpeicherverbrauchModeratHochModerat

Playwright und Pyppeteer weisen im Vergleich zu Selenium schnellere Ausführungszeiten auf, wobei Pyppeteer bei kurzen Skripten führend ist.

Funktionen für Entwicklung und Debugging

Debugging-Tools und Entwicklungsunterstützung unterscheiden sich erheblich zwischen diesen Bibliotheken:

FunktionSeleniumPlaywrightPyppeteerRequests-HTML
Debugging-ToolsGrundlegendErweitertGrundlegendEingeschränkt
Automatische WartefunktionenManuellIntegriertGrundlegendNicht verfügbar
Plattformübergreifende UnterstützungJaJaEingeschränktJa
Technischer SupportCommunityDokumentation + CommunityEingeschränktGrundlegend

Playwright hebt sich mit erweiterten Debugging-Tools und integrierten automatischen Wartefunktionen hervor und ist damit ideal für komplexe Projekte.

Optimierung nach Anwendungsfall

Verschiedene Bibliotheken überzeugen in unterschiedlichen Workflows:

AnwendungsfallEmpfohlene BibliothekWarum
Legacy-SystemeSeleniumBreite Browserkompatibilität
Moderne Web-AppsPlaywrightAsync-Unterstützung und schnellere Ausführung
Statische InhalteRequests-HTMLSchlank und effizient
Schnelle SkriptePyppeteerSchnelle Ausführung und ausgewogene Funktionen

Jede Bibliothek hat ihre eigene Nische, abhängig von den Anforderungen des Projekts.

Ressourceneffizienz

Der Ressourcenverbrauch variiert erheblich zwischen den Bibliotheken:

BibliothekCPU-AuslastungSpeicherbedarfBandbreiteneffizienz
SeleniumHochHochModerat
PlaywrightMittelMittelHoch
PyppeteerMittelMittelHoch
Requests-HTMLNiedrigNiedrigSehr hoch

Für statische Inhalte ist Requests-HTML am effizientesten, während Playwright für dynamische Anwendungen ein ausgewogenes Verhältnis zwischen Performance und Ressourcenverbrauch bietet.

Pyppeteer übertrifft Playwright bei der Ausführung kurzer Skripte und läuft nahezu 30 % schneller [5]. Die umfassendere Browserkompatibilität und die erweiterten Debugging-Tools von Playwright machen es jedoch zur besseren Wahl für anspruchsvollere Aufgaben auf Enterprise-Niveau.

Welche Bibliothek sollten Sie wählen?

Die Auswahl der richtigen Headless-Browser-Bibliothek hängt von Ihren spezifischen Automatisierungsanforderungen und Ihrer technischen Umgebung ab. Auf Grundlage der obigen Vergleiche können Sie Ihre Entscheidung treffen.

Wenn Sie mit modernen Webanwendungen arbeiten, ist Playwright eine starke Wahl. In Benchmarks übertraf es Selenium und erledigte Aufgaben in nur 290,37 Millisekunden, verglichen mit 536,34 Millisekunden bei Selenium[1]. Die asynchrone Unterstützung und die erweiterten Debugging-Tools eignen sich hervorragend für komplexe Automatisierungsaufgaben.

Für Enterprise- oder Legacy-Systeme ist Selenium eine zuverlässige Option. Mit mehr als 283.000 dedizierten GitHub-Repositories[1] bietet Selenium zahlreiche Community-Ressourcen, Kompatibilität mit älteren Browsern wie Internet Explorer und Automatisierung auf realen Geräten.

Für Umgebungen mit begrenzten Ressourcen bietet diese Übersicht eine schnelle Orientierung:

UmgebungstypEmpfohlene BibliothekWichtigster Vorteil
Statische InhalteRequests-HTMLGeringer Ressourcenverbrauch
Dynamische InhaltePyppeteerSchlank mit asynchronen Vorgängen

In Continuous-Integration-(CI)-Umgebungen überzeugt Playwright. Es lässt sich reibungslos in Plattformen wie GitHub Actions[8] integrieren, unterstützt parallele Tests und reduziert instabile Tests. Damit eignet es sich hervorragend für CI/CD-Pipelines.

Letztlich sollte Ihre Wahl auf Ihren Automatisierungszielen basieren. Playwright eignet sich hervorragend für moderne Webautomatisierung, während Selenium umfassendere Browserunterstützung und Optionen für Tests auf realen Geräten bietet[1].

References

FAQ

Frequently Asked Questions

Ein Python Headless Browser führt automatisierte Webinteraktionen aus, ohne eine grafische Benutzeroberfläche anzuzeigen. Dadurch werden Scraping, Tests und die Formularautomatisierung schneller und ressourceneffizienter.

War das hilfreich? Teile es →

Geschrieben von

Vasiliy Datsenko

Leiter des Kundensupports

Vasiliy Datsenko ist Leiter des Kundensupports bei Latenode und ein produktorientierter Autor zum Thema Automatisierung. Seine Arbeit verbindet Kundengespräche, Workflow-Automatisierungsforschung, KI-Anwendungsfälle und praktische Produktschulungen für Teams, die echte Geschäftsprozesse automatisieren möchten.

Autorenprofil →

Faktencheck von

Oleg Zankov

CEO Latenode, No-code-Experte

Mit einer Philosophie, die auf Innovation, Problemlösung und Benutzererfahrung basiert, konzentriere ich mich darauf, Teams zu befähigen, maßgeschneiderte Integrationen zu erstellen und Arbeitsabläufe einfach und effizient zu automatisieren. Mit umfangreicher Erfahrung in den Bereichen Geschäftsentwicklung, Technologieunternehmertum und Softwareentwicklung erkannte ich den Bedarf an einer zugänglicheren, skalierbareren und anpassungsfähigeren Integrationslösung. So entstand Latenode.com. Mit unserer Plattform können Unternehmen die Macht der Technologie nutzen, ohne umfassende Programmierkenntnisse zu benötigen. Leidenschaftlich daran interessiert, eine Zukunft zu fördern, in der Technologie uns dient und nicht umgekehrt, ist es meine Mission, komplexe Prozesse zu vereinfachen. Ich glaube an die Demokratisierung der Technologie und daran, Teams mit den Werkzeugen auszustatten, um in einer zunehmend digitalen Welt zu innovieren, zu wachsen und erfolgreich zu sein.

Autorenprofil →

Weiterlesen