Puppeteer für JavaScript (Node.js): Komplettguide mit Beispielen
1. Was ist Puppeteer und wofür wird es genutzt?
Puppeteer ist eine Node.js-Bibliothek, die eine leistungsstarke API zur Steuerung von Chrome (oder Chromium) über das DevTools-Protokoll bereitstellt. Standardmäßig läuft Puppeteer im Headless-Modus (ohne grafische Oberfläche), was es zum idealen Werkzeug für die serverseitige Webautomatisierung macht. Bei Bedarf kann der Browser jedoch auch im Vollmodus mit Benutzeroberfläche für Debugging-Zwecke gestartet werden.
Die Hauptanwendungsfälle von Puppeteer umfassen: Web Scraping (Extrahieren von Daten aus dynamischen Websites, die JavaScript verwenden), automatisiertes Testen von Webanwendungen (E2E-Tests), Erstellung von Screenshots und PDFs von Webseiten, Emulation von Benutzeraktionen (Klicks, Formularausfüllungen, Navigation) sowie Performance-Monitoring von Webseiten. Im Gegensatz zu einfachen HTTP-Anfragen führt Puppeteer das JavaScript auf der Seite aus, sodass auch dynamisch generierte Inhalte erfasst werden können.
Die Bibliothek wird aktiv vom Google-Team unterstützt und von tausenden Unternehmen in der Produktion eingesetzt. Puppeteer bietet vollständige Kontrolle über den Browser: von der Verwaltung von Tabs und dem Abfangen von Netzwerkanfragen bis hin zur Emulation mobiler Geräte und Geolokalisierung. Es ist ein universelles Werkzeug, das eine ganze Reihe von Dienstprogrammen für die Arbeit mit Webinhalten ersetzt.
2. Installation
Um Puppeteer über npm (Node Package Manager) zu installieren, führen Sie folgenden Befehl im Terminal im Stammverzeichnis Ihres Projekts aus:
npm install puppeteer
Dieser Befehl lädt die Bibliothek herunter und lädt automatisch eine kompatible Version von Chromium herunter (ca. 300-400 MB). Wenn Sie einen bereits installierten Chrome/Chromium auf Ihrem System verwenden möchten, installieren Sie puppeteer-core:
npm install puppeteer-core
Bei Verwendung von puppeteer-core müssen Sie beim Start den Pfad zur ausführbaren Browserdatei angeben. Für die Arbeit mit der Bibliothek wird Node.js Version 18.0.0 oder höher empfohlen (vorzugsweise die LTS-Version).
3. Schnellstart – Minimales Arbeitsbeispiel
Erstellen Sie eine Datei example.js und fügen Sie den folgenden Code ein, der einen Screenshot einer Webseite erstellt:
const puppeteer = require('puppeteer');
(async () => {
// Browser starten
const browser = await puppeteer.launch();
// Neue Seite öffnen
const page = await browser.newPage();
// Zur Website navigieren
await page.goto('https://example.com');
// Screenshot erstellen
await page.screenshot({ path: 'example.png' });
// Browser schließen
await browser.close();
})();
Starten Sie das Skript mit dem Befehl node example.js. Im Ordner erscheint die Datei example.png mit einem Screenshot der Seite example.com. Dies ist ein minimales, aber voll funktionsfähiges Beispiel für die Browser-Automatisierung.
4. Wichtige Methoden/Funktionen/Klassen
Nachfolgend finden Sie 8 wichtige Methoden und Klassen von Puppeteer mit Beschreibungen und Codebeispielen.
4.1. puppeteer.launch()
Signatur: puppeteer.launch([options]) → Promise<Browser>
Funktion: Startet eine Instanz des Chromium/Chrome-Browsers. Akzeptiert ein Optionsobjekt (headless, slowMo, args usw.). Gibt ein Browser-Objekt zurück.
const browser = await puppeteer.launch({
headless: false, // Browser anzeigen
slowMo: 100, // Aktionen verlangsamen (ms)
args: ['--window-size=1920,1080']
});