
Eine Gabel von Puppenspieler, die auf Deno rennt.
Puppenspieler ist eine Bibliothek, die eine hochrangige API zur Kontrolle von Chrom-, Chrom- oder Firefox-APIs über das Devtools-Protokoll bietet. Puppeteer läuft standardmäßig kopflos, kann jedoch so konfiguriert werden, dass er ein vollständiges (nicht headloses) Chrom oder Chrom ausführt.
Die meisten Dinge, die Sie im Browser manuell tun können, können mit Puppenspielern durchgeführt werden! Hier sind einige Beispiele, um Ihnen den Einstieg zu erleichtern:
Um Puppenspieler zu verwenden, importieren Sie es so:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Puppenspieler können jede kürzlich durchgeführte Version von Chromium oder Firefox Nacht verwenden, aber diese Version von Puppenspielern wird nur gegen eine bestimmte Version validiert. Führen Sie die folgenden Befehle aus, um diese Versionen im Puppenspieler -Cache zu leiten.
PUPPETEER_PRODUCT=chrome deno run -A --unstable https://deno.land/x/[email protected]/install.ts
PUPPETEER_PRODUCT=firefox deno run -A --unstable https://deno.land/x/[email protected]/install.tsSie finden alle unterstützten Umgebungsvariablen, um die Installation in den Puppenspieler -Dokumenten anzupassen.
Puppeteeder ist Menschen, die andere Browser -Test -Frameworks verwenden, vertraut. Sie erstellen eine Instanz des Browser , öffnen Seiten und manipulieren sie dann mit der API des Puppenspielers.
Beispiel - Navigieren Sie zu https://example.com und speichern Sie einen Screenshot als Beispiel.png :
Datei als Beispiel.js speichern
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
const browser = await puppeteer . launch ( ) ;
const page = await browser . newPage ( ) ;
await page . goto ( "https://example.com" ) ;
await page . screenshot ( { path : "example.png" } ) ;
await browser . close ( ) ;Führen Sie das Skript in der Befehlszeile aus
deno run -A --unstable example.js Puppenspieler setzt eine Anfangsseitengröße auf 800 × 600px, wodurch die Screenshot -Größe definiert wird. Die Seitengröße kann mit Page.setViewport() angepasst werden.
Beispiel - Erstellen Sie eine PDF.
Datei als hn.js speichern
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
const browser = await puppeteer . launch ( ) ;
const page = await browser . newPage ( ) ;
await page . goto ( "https://news.ycombinator.com" , {
waitUntil : "networkidle2" ,
} ) ;
await page . pdf ( { path : "hn.pdf" , format : "A4" } ) ;
await browser . close ( ) ;Führen Sie das Skript in der Befehlszeile aus
deno run -A --unstable hn.js Weitere Informationen zum Erstellen von PDFs finden Sie Page.pdf() .
Beispiel - das Skript im Kontext der Seite bewerten
Datei als Get-Dimensions.js speichern
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;
const browser = await puppeteer . launch ( ) ;
const page = await browser . newPage ( ) ;
await page . goto ( "https://example.com" ) ;
// Get the "viewport" of the page, as reported by the page.
const dimensions = await page . evaluate ( ( ) => {
return {
width : document . documentElement . clientWidth ,
height : document . documentElement . clientHeight ,
deviceScaleFactor : window . devicePixelRatio ,
} ;
} ) ;
console . log ( "Dimensions:" , dimensions ) ;
await browser . close ( ) ;Führen Sie das Skript in der Befehlszeile aus
deno run -A --unstable get-dimensions.js deno-puppeteer führt effektiv eine reguläre Version des Puppenspielers aus, mit Ausnahme einiger kleinerer Änderungen, um sie mit Deno kompatibel zu machen.
Der bemerkenswerteste Unterschied ist wahrscheinlich, dass anstelle einiger Methoden, die einen Buffer einnehmen / zurückgeben, Uint8Array entnehmen / zurückgeben. Eine Methode gibt auch ein Web -Native ReadableStream anstelle des Readable Knotens zurück.
Abgesehen davon gilt die Dokumentation auf https://pptr.dev im Allgemeinen.
In diesem Repository finden Sie ein Beispiel Dockerfile. Es wird alle notwendigen Abhängigkeiten installiert und zeigt, wie die ./examples/docker.js ausgeführt werden.
Es ist nur als Ausgangspunkt gedacht - passen Sie ihn nach Belieben an.