
Una bifurcación de titiritero corriendo en Deno.
Puppeteer es una biblioteca que proporciona una API de alto nivel para controlar el protocolo de cromo, cromo o Firefox sobre el protocolo DevTools. Puppeteer se ejecuta sin cabeza de forma predeterminada, pero se puede configurar para ejecutar cromo o cromo completo (sin cabeza).
¡La mayoría de las cosas que puedes hacer manualmente en el navegador se pueden hacer usando Puppeteer! Aquí hay algunos ejemplos para comenzar:
Para usar Puppeteer, importarlo así:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;Puppeteer puede usar cualquier versión reciente de Chromium o Firefox por la noche, pero esta versión de Puppeteer solo se valida contra una versión específica. Para almacenar en caché estas versiones en el caché de titiriteros, ejecute los comandos a continuación.
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.tsPuede encontrar todas las variables de entorno compatibles para personalizar la instalación en los documentos de Puppeteer.
Puppeteer estará familiarizado para las personas que usan otros marcos de prueba de navegador. Creas una instancia de Browser , abres páginas y luego las manipulas con la API de Puppeteer.
Ejemplo : navegar a https://example.com y guardar una captura de pantalla como Ejemplo.png :
Guardar archivo como ejemplo.js
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 ( ) ;Ejecutar script en la línea de comando
deno run -A --unstable example.js Pitinger establece un tamaño de página inicial a 800 × 600px, que define el tamaño de la captura de pantalla. El tamaño de la página se puede personalizar con Page.setViewport() .
Ejemplo : cree un PDF.
Guardar archivo como hn.js
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 ( ) ;Ejecutar script en la línea de comando
deno run -A --unstable hn.js Consulte Page.pdf() para obtener más información sobre la creación de PDFS.
Ejemplo : evaluar el script en el contexto de la página
Guardar archivo como get-dimensions.js
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 ( ) ;Ejecutar script en la línea de comando
deno run -A --unstable get-dimensions.js deno-puppeteer ejecuta efectivamente una versión regular de Puppeteer, excepto por algunos cambios menores para que sea compatible con Deno.
La diferencia más notable es probable que, en lugar de algunos métodos que toman Buffer del nodo / retorno, toman / devuelven Uint8Array . Un método también devuelve una ReadableStream nativa de Web en lugar del nodo Readable .
Aparte de esto, la documentación en https://pptr.dev generalmente se aplica.
Se puede encontrar un ejemplo de Dockerfile en este repositorio. Instalará todas las dependencias necesarias y muestra cómo ejecutar ./examples/docker.js.
Simplemente se entiende como un punto de salto: personalícelo como desee.