Início rápido do Puppeteer

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:

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