
Um garfo de marionetistas correndo em deno.
O boneco é uma biblioteca que fornece uma API de alto nível para controlar o cromo, o cromo ou o Firefox todas as noites sobre o protocolo Devtools. O marionetista funciona sem cabeça por padrão, mas pode ser configurado para executar o Chrome ou o cromo completo (sem jrejamento).
A maioria das coisas que você pode fazer manualmente no navegador pode ser feita usando marionetistas! Aqui estão alguns exemplos para você começar:
Para usar marionetistas, importe -o assim:
import puppeteer from "https://deno.land/x/[email protected]/mod.ts" ;O boneca pode usar qualquer versão recente do Chromium ou do Firefox todas as noites, mas esta versão do bonequeiro é validada apenas em uma versão específica. Para cache essas versões no cache do boneco, execute os comandos abaixo.
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.tsVocê pode encontrar todas as variáveis de ambiente suportadas para personalizar a instalação nos documentos de marionetistas.
O boneco estará familiarizado para as pessoas que usam outras estruturas de teste do navegador. Você cria uma instância de Browser , páginas abertas e manipula -as com a API de marionetista.
Exemplo - Navegando para https://example.com e salvando uma captura de tela como exemplo.png :
Salvar o arquivo como exemplo.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 ( ) ;Execute o script na linha de comando
deno run -A --unstable example.js O marionetista define um tamanho de página inicial para 800 × 600px, que define o tamanho da captura de tela. O tamanho da página pode ser personalizado com Page.setViewport() .
Exemplo - Crie um PDF.
Salvar o arquivo 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 ( ) ;Execute o script na linha de comando
deno run -A --unstable hn.js Consulte Page.pdf() para obter mais informações sobre como criar PDFs.
Exemplo - Avalie o script no contexto da página
Salvar o arquivo 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 ( ) ;Execute o script na linha de comando
deno run -A --unstable get-dimensions.js deno-puppeteer executa efetivamente uma versão regular do boneco, exceto algumas pequenas alterações para torná-lo compatível com o Deno.
A diferença mais perceptível é provável que, em vez de alguns métodos levarem / retornar Buffer de nó, eles recebem / retornam Uint8Array . Um método também retorna uma ReadableStream nativa na web em vez do nó Readable .
Fora isso, a documentação em https://pptr.dev geralmente se aplica.
Um exemplo do DockerFile pode ser encontrado neste repositório. Ele instalará todas as dependências necessárias e mostrará como executar o .xamples/docker.js.
Apenas significa um ponto de partida - personalize -o como desejar.