Eine Low-Code-Plattform, die die Einfachheit von No-Code mit der Leistung von Full-Code verbindet 🚀
Jetzt kostenlos starten
2. März 2025
10
min lesen

Python Headless Browser: Beste Bibliotheken für die Automatisierung

Georgi Miloradowitsch
Forscher, Texter und Usecase-Interviewer
Inhaltsverzeichnis

Mit Headless-Browsern können Sie Webaufgaben automatisieren, 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-Browserautomatisierung, jede mit einzigartigen Stärken:

  • Selen (2004): Funktioniert mit mehreren Browsern, ausgereiftes Ökosystem, ideal für Legacy-Systeme.
  • Dramatiker (2020): Modern, asynchrone Unterstützung, schnell und ideal für moderne Web-Apps.
  • Pippeteer (2017): Leichtgewicht, Chromium-only, ideal für schnelle Skripte.
  • Anfragen-HTML: Einfach, schnell und am besten für das Scraping statischer Inhalte geeignet.

Schneller Vergleich

Merkmal Selen Dramatiker Pippeteer Anfragen-HTML
Browser-Unterstützung Chrome, Firefox, Internet Explorer Chrome, Firefox, WebKit Nur Chrom Chromium (für JS)
Asynchrone Unterstützung Nein Ja Ja Nein
Ressourcennutzung Hoch Verwendung Verwendung Niedrig
Geeignet für Legacy-Systeme Moderne Web-Apps Schnelle Skripte Statischer Inhalt

Wenn Sie umfassende Browserunterstützung benötigen, entscheiden Sie sich für Selenium. Für moderne Apps und bessere Leistung ist Playwright die bessere Wahl. Pyppeteer ist ideal für schnelle Aufgaben, während Requests-HTML sich durch leichtes statisches Scraping auszeichnet. Wählen Sie diejenige aus, die Ihren Projektanforderungen entspricht.

Was ist ein Headless-Browser? Wie führt man Headless Chrome aus?

1. Selen

Selen

Selenium wurde erstmals im Jahr 2004 eingeführt und ist ein bewährtes Tool zur Browserautomatisierung, das Unterstützung für mehrere Browser sowie erweiterte Automatisierungsfunktionen bietet.

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 und Kompatibilität sowohl mit dem WebDriver-Protokoll als auch Chrome DevTools-Protokoll (CDP). Es unterstützt drei wichtige Browser im Headless-Modus, jeder mit seinen eigenen Stärken:

Browser Erfolgsfaktoren Bester Anwendungsfall
Chrome Schnelle Ausführung, Entwicklertools Allgemeine Automatisierung, Web Scraping
Firefox Starker Datenschutz, zuverlässiges Rendering Sicherheitsorientierte Aufgaben
Marktumfeld Windows-Integration, Chromium-Basis Windows-spezifische Automatisierung

Leistungsoptimierung

Um die Leistung von Selenium zu verbessern, sollten Sie diese Strategien in Betracht ziehen:

  • Ressourcenmanagement
    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 Elementplatzierung
    Verwenden Sie präzise Methoden, um Elemente für eine schnellere Interaktion zu lokalisieren:
    element = driver.find_element(By.ID, "search-input")
    
  • Browser-Instanzverwaltung
    Verwalten Sie Browserinstanzen sorgfältig, um eine Überlastung der Ressourcen zu vermeiden:
    driver.set_page_load_timeout(30)
    driver.quit()  # Clean up resources
    

Erweiterte Funktionen

Selenium bietet mehrere erweiterte Funktionen:

  • Umgehen der Anti-Bot-Erkennung mit Tools wie Undetected ChromeDriver
  • Browserübergreifende Tests
  • Netzwerksteuerung für tiefere Automatisierung
  • JavaScript-Ausführung für benutzerdefinierte Interaktionen

Obwohl Selenium im Vergleich zu Tools wie Playwright möglicherweise mehr Einrichtung erfordert, ist es aufgrund seiner umfassenden Browserunterstützung und Kompatibilität mit älteren Systemen, einschließlich Internet Explorer, eine solide Wahl für komplexe Automatisierungsprojekte. Sein ausgereiftes Ökosystem gewährleistet Zuverlässigkeit für eine Vielzahl von Anwendungsfällen.

2. Dramatiker

Dramatiker

Playwright wurde von Microsoft entwickelt und bietet eine schnelle und zuverlässige Möglichkeit zur Automatisierung von Headless-Browsern durch direkte Kommunikation mit dem Chrome DevTools-Protokoll.

Installation und Einrichtung

Um mit Playwright zu beginnen, installieren Sie es mit pip und richten Sie die erforderlichen Browser-Binärdateien ein:

pip install playwright
playwright install  # Installs browser binaries

Hier ist ein Beispiel für ein einfaches Skript:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    # Add your automation tasks here
    browser.close()

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

Leistung und Funktionen

Playwright zeichnet sich durch die Verwendung effizienter WebSocket-basierter Kommunikation aus, im Gegensatz zu den herkömmlichen Methoden von Selenium. In Leistungstests schloss Playwright 100 Iterationen in 290.37 ms ab, im Vergleich zu 536.34 ms bei Selenium.

Einige der wichtigsten Merkmale sind:

  • Automatisches Warten: Wartet automatisch, bis Elemente bereit sind, und reduziert so die Notwendigkeit manueller Timeouts.
  • Videoaufnahme: Integrierte Unterstützung für die Aufzeichnung von Debugging-Sitzungen.
  • Browserübergreifende Unterstützung: Funktioniert mit Chromium, Firefox und WebKit.
  • Isolierte Browserkontexte: Gewährleistet die Testisolierung durch Trennung der Browsersitzungen.

Vergleich der Browserunterstützung

Hier ist ein kurzer Blick auf die Headless-Modus-Unterstützung in allen Browsern in Playwright:

Browser Kopfloser Modus
Chromium Standardmäßig aktiviert
Firefox Unterstützte
WebKit Unterstützte

Praxisbeispiele

Um Playwright optimal zu nutzen, befolgen Sie diese Tipps:

  • Integrierte Wartefunktionen nutzen

Anstatt Verzögerungen fest zu codieren, verwenden Sie die automatische Wartezeit von Playwright:

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

Browserkontexte bieten für jeden Test eine leere Tafel:

context = browser.new_context()
page = context.new_page()
# Perform tasks within this context
context.close()

Die ordnungsgemäße Verwaltung von Browserinstanzen ist besonders in Umgebungen mit mehreren Threads wichtig.

Überlegungen zum Threading

Da die API von Playwright nicht threadsicher ist, benötigen Sie für jeden Thread eine separate Instanz:

def thread_function():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        # Perform thread-specific tasks
        browser.close()

Playwright eignet sich gut für moderne Webautomatisierungsprojekte. Seine Debugging-Tools und sein Codegenerator können Entwicklern im Vergleich zu älteren Frameworks Zeit sparen. Obwohl die Community-Größe (116 GitHub-Repositories) kleiner ist als die von Selenium (283 Repositories), deuten sein schnelles Wachstum und die Unterstützung durch Microsoft auf eine vielversprechende Zukunft hin.

sbb-itb-23997f1

3. Pippeteer

Pippeteer

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

Installation und Grundeinstellung

Um Pyppeteer zu verwenden, benötigen Sie Python 3.6 oder höher. Installieren Sie es über pip mit den folgenden Befehlen:

pip install pyppeteer
pyppeteer-install  # Downloads Chromium (~150MB)

Hier ist ein einfaches Skript, das seine asynchronen Funktionen demonstriert:

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 Insights

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

Hauptfunktionen und Einschränkungen

Merkmal Details
Browser-Unterstützung Nur Chrom
Asynchrone Unterstützung Eingebaut
JavaScript-Rendering Voll unterstützt
Memory Usage Niedriger im Vergleich zu Selen
Installationsgröße Kompakt (~150 MB mit Chromium)
Browserübergreifendes Testen Nicht unterstützt

Tipps zur Leistungsoptimierung

Um die Leistung von Pyppeteer zu verbessern, verwenden Sie dieselbe Browserinstanz für mehrere Aufgaben erneut, anstatt neue Instanzen zu öffnen:

browser = await launch()

for task in tasks:
    page = await browser.newPage()
    # Perform operations
    await page.close()
await browser.close()

Dieser Ansatz kann dazu beitragen, den Mehraufwand zu reduzieren und Ihre Skripte zu beschleunigen.

Fehlerbehandlung

Ein häufiges Problem ist der Fehler „Browser wurde unerwartet geschlossen“, der oft durch fehlende Chromium-Abhängigkeiten verursacht wird. pyppeteer-install stellt sicher, dass alle erforderlichen Komponenten vorhanden sind.

„Pyppeteer ist ein Tool zur Automatisierung eines Chromium-Browsers mit Code, das es Python-Entwicklern ermöglicht, JavaScript-Rendering-Funktionen zu erhalten, um mit modernen Websites zu interagieren und menschliches Verhalten besser zu simulieren.“ – ZenRows

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

4. Anfragen-HTML

Anfragen-HTML

Requests-HTML ist ein einfaches 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, stellen Sie sicher, dass Sie Python 3.6 oder höher haben. Installieren Sie es mit:

pip install requests-html

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

Leistungsbenchmarks

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

Operationstyp Anfragen-HTML Selen
API-Anfragen 0.11 s ± 0.01 s 5.16 s ± 0.04 s
Textextraktion 0.28 s ± 0.01 s 5.32 s ± 0.09 s

Diese Daten zeigen, wie gut Requests-HTML bei Aufgaben abschneidet, die schnelle Antworten erfordern.

Hauptmerkmale und Fähigkeiten

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           # Extract all links
r.html.absolute_links  # Extract absolute URLs

# Enable JavaScript rendering
r.html.render()        

Zu den herausragenden Funktionen gehören:

  • CSS-Selektoren (ähnlich wie jQuery)
  • XPath-Unterstützung
  • Automatische Weiterleitungsbehandlung
  • Verbindungspooling
  • Cookie-Persistenz
  • Simulierte User-Agent-Strings für mehr Flexibilität

Tipps zur Leistungsoptimierung

So erzielen Sie die beste Leistung:

  • Begrenzen Sie die JavaScript-Darstellung, um den Chromium-Overhead zu reduzieren.
  • Verwenden Sie Sitzungsobjekte für mehrere Anforderungen wieder.
  • Entscheiden Sie sich für CSS-Selektoren statt XPath für einfachere und schnellere Abfragen.

Einschränkungen und Anwendungsfälle

Aspekt Details
JavaScript-Unterstützung Verfügbar, muss aber explizit aktiviert werden
Memory Usage Niedrig für statische Inhalte; höher mit JS-Rendering
Authentifizierung Erfordert manuelle Einrichtung
CAPTCHA-Behandlung Begrenzte Funktionalität

„Verwenden Sie Anfragen, wenn Sie eine schnelle, einfache und zuverlässige Möglichkeit zum Abrufen statischer Webinhalte oder API-Daten benötigen.“ – Joseph McGuire

Requests-HTML eignet sich ideal für Aufgaben, bei denen Geschwindigkeit und Ressourceneffizienz entscheidend sind. Das Scraping statischer Webseiten dauert beispielsweise nur Millisekunden, im Vergleich zu mehreren Sekunden mit Tools wie Selenium.

Ressourcenoptimierung

Requests-HTML minimiert die Bandbreitennutzung, indem nur die von Ihnen angeforderten Ressourcen geladen werden. Dies kann die Proxy-Kosten für Projekte, die auf bandbreitenbasierten Preismodellen basieren, erheblich senken. Sein effizientes Design beschleunigt nicht nur die Ausführung, sondern reduziert auch den Ressourcenverbrauch.

Für Projekte mit statischem Inhalt bietet Requests-HTML im Vergleich zu schwereren Browser-Automatisierungstools eine schlanke und effiziente Lösung. Dies macht es zu einer guten Wahl in Szenarien, in denen Geschwindigkeit und Ressourceneinsparungen im Vordergrund stehen.

Vergleichstabelle für Bibliotheken

Hier ist ein detaillierter Vergleich der Headless-Browserbibliotheken von Python basierend auf ihren Funktionen, Leistung und Ressourceneffizienz.

Kernfunktionen und -fähigkeiten

Merkmal Selen Dramatiker Pippeteer Anfragen-HTML
Browser-Unterstützung Chrome, Firefox, Safari, IE Chrome, Firefox, WebKit Nur Chrom Chromium (für JS)
JavaScript-Unterstützung Vollständiger Vollständiger Vollständiger Limitiert
Asynchrone Unterstützung Nein Ja Ja Nein
Komplexität der Installation Hoch (WebDriver erforderlich) Verwendung Verwendung Niedrig
Ressourcennutzung Hoch Verwendung Verwendung Niedrig
Gemeinschaftsgröße 283+ Repos 116+ Repos Konservativ Klein

Diese Funktionen bieten eine Momentaufnahme der Stärken und Schwächen der einzelnen Bibliotheken und schaffen die Grundlage für weitere Analysen.

Leistungsbenchmarks

Benchmarktests zeigen wichtige Leistungsunterschiede auf:

Produktion Dramatiker Selen Pippeteer
Ausführungszeit 290.37ms 536.34ms ~203 ms
Ressourcenintensität Verwendung Hoch Verwendung
Memory Usage Konservativ Hoch Konservativ

Playwright und Pyppeteer weisen im Vergleich zu Selenium schnellere Ausführungszeiten auf, wobei Pyppeteer bei der Leistung kurzer Skripte führend ist.

Entwicklungs- und Debugfunktionen

Die Debugging-Tools und die Entwicklungsunterstützung dieser Bibliotheken unterscheiden sich erheblich:

Merkmal Selen Dramatiker Pippeteer Anfragen-HTML
Debugging-Tools Basic Erweitert Basic Limitiert
Auto-Wait-Funktionen Manuell Eingebaut Basic N / A
Plattformübergreifende Unterstützung Ja Ja Limitiert Ja
Technischer Support Community Dokumentation + Community Limitiert Basic

Playwright zeichnet sich durch erweiterte Debugging-Tools und integrierte Auto-Wait-Funktionen aus und ist daher ideal für komplexe Projekte.

Anwendungsfalloptimierung

Verschiedene Bibliotheken eignen sich hervorragend für bestimmte Szenarien:

Luftüberwachung Empfohlene Bibliothek Warum
Legacy-Systeme Selen Breite Browserkompatibilität
Moderne Web-Apps Dramatiker Asynchrone Unterstützung und schnellere Ausführung
Static Content Anfragen-HTML Leicht und effizient
Schnelle Skripte Pippeteer Schnelle Ausführung und ausgewogene Funktionen

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

Ressourceneffizienz

Die Ressourcennutzung variiert erheblich zwischen den Bibliotheken:

Bibliothek CPU auslastung Gedächtnis-Fußabdruck Bandbreiteneffizienz
Selen Hoch Hoch Konservativ
Dramatiker Verwendung Verwendung Hoch
Pippeteer Verwendung Verwendung Hoch
Anfragen-HTML Niedrig Niedrig Sehr hoch

Für statische Inhalte ist Requests-HTML am effizientesten, während Playwright Leistung und Ressourcennutzung für dynamische Anwendungen ausgleicht.

Pyppeteer übertrifft Playwright bei der Ausführung kurzer Skripts und läuft fast 30 % schneller. Playwrights breitere Browserkompatibilität und erweiterte Debugging-Tools machen es jedoch zur besseren Wahl für anspruchsvollere Aufgaben auf Unternehmensebene.

Welche Bibliothek sollten Sie wählen?

Die Auswahl der richtigen Headless-Browser-Bibliothek hängt von Ihren spezifischen Automatisierungsanforderungen und Ihrem technischen Setup ab. Basierend auf den obigen Vergleichen können Sie hier eine Entscheidung treffen.

Wenn Sie mit moderne WebanwendungenPlaywright ist eine gute Wahl. Es hat Selenium in Benchmarks übertroffen und Aufgaben in nur 290.37 Millisekunden erledigt, während Selenium 536.34 Millisekunden benötigte. Dank seiner asynchronen Unterstützung und der erweiterten Debugging-Tools eignet es sich gut für die Handhabung komplexer Automatisierungsaufgaben.

Für Unternehmens- oder Legacy-Systeme, Selenium ist eine zuverlässige Option. Mit über 283,000 GitHub-Repositories, die ihm gewidmet sind, bietet Selenium eine Fülle von Community-Ressourcen, Kompatibilität mit älteren Browsern wie Internet Explorer und echte Geräteautomatisierung.

Für Umgebungen mit begrenzten Ressourcen finden Sie hier eine Kurzanleitung:

Umgebungstyp Empfohlene Bibliothek Entscheidender Vorteil
Static Content Anfragen-HTML Geringer Ressourcenverbrauch
Dynamischer Inhalt Pippeteer Leichtgewicht mit asynchronen Operationen

In Setups für kontinuierliche Integration (CI), Playwright glänzt. Es lässt sich problemlos in Plattformen wie GitHub Actions integrieren, unterstützt paralleles Testen und trägt dazu bei, fehlerhafte Tests zu reduzieren, wodurch es sich hervorragend für CI/CD-Pipelines eignet.

Letztendlich sollte sich Ihre Wahl auf Ihre Automatisierungsziele konzentrieren. Playwright eignet sich hervorragend für moderne Webautomatisierung, während Selenium eine breitere Browserunterstützung und Testoptionen für echte Geräte bietet.

Ähnliche Blog-Beiträge

Verwandte Blogs

Anwendungsfall

Unterstützt von