Para usar o Puppeteer no seu projeto, é preciso primeiro instalá-lo.
Instalação
npm i puppeteer
# or "yarn add puppeteer"
Quando você instala o Puppeteer, ele faz o download de uma versão recente do Chromium (aproximadamente 170 MB para Mac, ~282 MB de Linux, ~280 MB de Win), que tem garantia de funcionar com a API. Para pular o download, fazer o download para outro caminho ou fazer o download de um navegador diferente, consulte Variáveis de ambiente.
núcleo de marionete
Desde a versão 1.7.0, publicamos o pacote puppeteer-core
. Esta versão do
Puppeteer não faz o download de nenhum navegador por padrão.
npm i puppeteer-core
# or "yarn add puppeteer-core"
puppeteer-core
é destinado a ser uma versão leve do Puppeteer para iniciar uma instalação existente do navegador ou para se conectar a um remoto. Certifique-se de que a versão do puppeteer-core instalada seja compatível com o navegador ao qual pretende se conectar.
Consulte puppeteer x puppeteer-core.
Uso
O Puppeteer segue a versão mais recente do LTS de manutenção do Node.
O Puppeteer provavelmente é familiar para as pessoas que usam outras estruturas de teste de navegador.
Crie uma instância de Browser
, abra páginas e as manipule com a
API do Puppeteer.
Salvar uma captura de tela
Por exemplo, para navegar até https://example.com
e salvar uma captura de tela como
example.png
, salve o código a seguir em example.js
.
const puppeteer = require('puppeteer');
(async () => {
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();
})();
O Puppeteer define um tamanho de página inicial como 800×600px, que define o tamanho da captura de tela. O tamanho da página pode ser personalizado com Page.setViewport().
Criar um PDF
Salve o arquivo como hn.js
.
const puppeteer = require('puppeteer');
(async () => {
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:
node hn.js
Consulte Page.pdf() para mais informações sobre como criar PDFs.
Avaliar o script no contexto da página
Salve o arquivo como get-dimensions.js
:
const puppeteer = require('puppeteer');
(async () => {
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:
node get-dimensions.js
Consulte Avaliar o JavaScript para mais
informações sobre métodos de avaliação e relacionados, como evaluateOnNewDocument
e
exposeFunction
.
Configurações padrão do ambiente de execução
Usa o modo headless
O Puppeteer inicia o Chromium no modo headless. Para
iniciar uma versão completa do Chromium, defina a opção
headless
ao
iniciar um navegador:
const browser = await puppeteer.launch({ headless: false }); // default is true
Executa uma versão agrupada do Chromium
Por padrão, o Puppeteer faz o download e usa uma versão específica do Chromium para garantir que a API funcione desde o início. Para usar o Puppeteer com uma versão diferente do Chrome ou do Chromium, transmita o caminho do executável ao criar uma instância de Browser
:
const browser = await puppeteer.launch({ executablePath: '/path/to/Chrome' });
Você também pode usar o Puppeteer com o Firefox Nightly (suporte experimental).
Consulte Puppeteer.launch()
para ver mais informações.
Para mais informações:
- What's the Difference Between Chromium e Chrome? do How-To Geek (em inglês).
- No Documentos do Chromium, descrevemos algumas diferenças para usuários do Linux.
Cria um novo perfil de usuário
O Puppeteer cria o próprio perfil de usuário do navegador, que é limpo a cada execução.
Próximas etapas
- Saiba mais sobre a versão headless do Chrome.
- Confira estes exemplos.