Ir para o conteúdo principal
Piloterr
Voltar ao blog
13 de julho de 2025

Puppeteer: Biblioteca de Web Scraping em Node.js para JavaScript

No cenário web moderno, clientes HTTP tradicionais frequentemente falham ao lidar com sites pesados em JavaScript, aplicações de página única (SPAs) e conteúdo dinâmico. Puppeteer, uma poderosa biblioteca Node.js que fornece uma API de alto nível para controlar navegadores Chrome ou Chromium de forma programática. Ao contrário das ferramentas convencionais de scraping que lidam apenas com HTML estático, o Puppeteer renderiza páginas como um navegador real, tornando-o perfeito para scraping de aplicações web modernas. Você pode abrir o projeto no Github.

Pule operações de navegador com APIs de navegadores headless: compare Piloterr vs ScraperAPI.

O que é Puppeteer?

Puppeteer é uma biblioteca Node.js desenvolvida pelo Google que fornece uma API de alto nível para controlar navegadores Chrome ou Chromium sem interface gráfica. Ele também pode ser configurado para rodar em modo completo (não headless) para fins de depuração. O Puppeteer permite automatizar o envio de formulários, testes de interface, entrada de teclado e, mais importante para nossos propósitos, web scraping de conteúdo renderizado por JavaScript.

Desenvolvido pela equipe do Chrome DevTools, o Puppeteer oferece controle detalhado sobre a instância do navegador, permitindo interceptar requisições de rede, injetar JavaScript, tirar screenshots, gerar PDFs e extrair dados de aplicações web complexas que os scrapers tradicionais não conseguem lidar.

Principais Recursos

Automação Completa do Navegador

  • Execução de JavaScript: Suporte completo para sites pesados em JavaScript
  • Manipulação do DOM: Interagir com elementos, clicar em botões, preencher formulários
  • Interceptação de Rede: Monitorar e modificar requisições de rede
  • Gerenciamento de Cookies: Manipulação automática de cookies e gerenciamento de sessão

Capacidades Avançadas de Scraping

  • Conteúdo Dinâmico: Lidar com rolagem infinita, carregamento lento e requisições AJAX
  • Screenshots e PDFs: Gerar capturas visuais e documentos
  • Emulação Mobile: Simular dispositivos móveis e viewports
  • Geolocalização: Simular diferentes localizações geográficas

Desempenho e Controle

  • Modo Headless: Executar navegadores sem interface para melhor desempenho
  • Bloqueio de Recursos: Bloquear imagens, CSS, fontes para melhorar a velocidade
  • Interceptação de Requisições: Modificar requisições em tempo real
  • Execução Concorrente: Executar múltiplas instâncias de navegador simultaneamente

Casos de Uso

Aplicações SPA e React/Vue/Angular

Aplicações web modernas frequentemente carregam conteúdo dinamicamente por meio de JavaScript. O Puppeteer pode:

  • Aguardar o carregamento de elementos específicos
  • Lidar com roteamento do lado do cliente
  • Interagir com componentes complexos de UI
  • Extrair dados que só aparecem após interações do usuário

Monitoramento de Preços no E-commerce

  • Navegar por catálogos de produtos
  • Lidar com imagens e avaliações carregadas sob demanda
  • Automatizar buscas e filtros
  • Extrair informações de preços de páginas renderizadas por JavaScript

Redes Sociais e Scraping de Notícias

  • Rolar por feeds infinitos
  • Lidar com fluxos de autenticação
  • Extrair comentários e interações
  • Monitorar atualizações de conteúdo em tempo real

Testes e Garantia de Qualidade

  • Testes automatizados de UI
  • Monitoramento de desempenho
  • Comparação de screenshots (na Piloterr, temos um software chamado Capturekit.dev para screenshots via API)
  • Testes de compatibilidade entre navegadores

Começando

Instalação

Bash
npm install puppeteer

Uso Básico

Aqui está um exemplo simples para começar:

JavaScript
import puppeteer from 'puppeteer';

const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close();

Exemplos Avançados

Scraping de Produtos de E-commerce

JavaScript
await page.goto('https://shop.example.com/products');
await page.waitForSelector('.product-card');
const products = await page.$$eval('.product-card', cards =>
  cards.map(card => ({
    name: card.querySelector('h2')?.textContent?.trim(),
    price: card.querySelector('.price')?.textContent?.trim(),
  }))
);

Melhores Práticas

Gerenciamento de Recursos

Sempre feche o navegador quando terminar:

JavaScript
const browser = await puppeteer.launch();
try {
  const page = await browser.newPage();
  // lógica de scraping
} finally {
  await browser.close();
}

Limitação de Taxa

Adicione atrasos entre as requisições para reduzir o risco de bloqueios:

JavaScript
await new Promise(r => setTimeout(r, 1000 + Math.random() * 2000));

Gerenciamento de Memória

Bloqueie recursos pesados quando você só precisa de HTML ou JSON:

JavaScript
await page.setRequestInterception(true);
page.on('request', req => {
  if (['image', 'stylesheet', 'font'].includes(req.resourceType())) {
    req.abort();
  } else {
    req.continue();
  }
});

Comparação com Outras Ferramentas de Scraping

RecursoPuppeteerPlaywrightSeleniumCheerio
Execução de JavaScript
Suporte Multi-NavegadorChrome apenas
DesempenhoAltoAltoMédioMuito Alto
Simplicidade da APIExcelenteExcelenteComplexaSimples
Uso de RecursosMédioMédioAltoBaixo
Conteúdo Dinâmico
Curva de AprendizadoFácilFácilÍngremeMuito Fácil

Solução de Problemas

Vazamentos de Memória

Garanta que cada navegador lançado seja fechado, mesmo quando ocorrer um erro:

JavaScript
browser.on('disconnected', () => console.error('Navegador desconectado'));

Timeouts

Aumente os timeouts de navegação para páginas lentas:

JavaScript
await page.setDefaultNavigationTimeout(30000);

Evasão de Detecção

Use configurações realistas de viewport e user-agent, e oculte flags de automação quando necessário:

JavaScript
await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36');
await page.evaluateOnNewDocument(() => {
  Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
});

Alternativamente, você pode usar o Piloterr para o seu projeto de scraping, já que as APIs ajudarão você a contornar os melhores anti-bots do mercado.

Boa configuração de Dockerfile

Dockerfile
FROM node:20-slim
RUN apt-get update && apt-get install -y chromium
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium

Conclusão

O Puppeteer revolucionou o web scraping ao fornecer aos desenvolvedores uma abordagem poderosa e baseada em navegador para a extração de dados. Sua capacidade de lidar com sites pesados em JavaScript, conteúdo dinâmico e interações complexas do usuário o torna uma ferramenta indispensável para projetos modernos de web scraping.

A API intuitiva da biblioteca, excelente desempenho e conjunto abrangente de recursos permitem que os desenvolvedores construam soluções sofisticadas de scraping que podem lidar com as aplicações web modernas mais desafiadoras. Desde o monitoramento de e-commerce até a coleta de dados de redes sociais, o Puppeteer fornece as ferramentas necessárias para extrair insights valiosos da web dinâmica de hoje.

Embora o Puppeteer consuma mais recursos do que clientes HTTP tradicionais, a troca vale a pena para aplicações que exigem execução de JavaScript e comportamento autêntico de navegador. Sua capacidade de contornar medidas anti-bot e lidar com fluxos de autenticação complexos o torna particularmente valioso para projetos de scraping em nível empresarial.

À medida que as aplicações web continuam a se tornar mais dependentes de JavaScript e sofisticadas, ferramentas como o Puppeteer se tornarão cada vez mais essenciais para iniciativas bem-sucedidas de web scraping. A combinação do apoio do Google, desenvolvimento ativo e forte suporte da comunidade garante que o Puppeteer permanecerá uma escolha líder para automação de navegadores e web scraping.

Recursos

Mais para ler

Guias e notícias sobre web scraping, proxies e extração de dados.

Web Scraping

Migrando do NetNut: o que fazer após a desativação da rede

O Google tomou medidas contra a rede de proxies NetNut/Popa em conjunto com o FBI e a Lumen. Como repensar sua stack de scraping sem gerenciar proxies por conta própria.

Josselin Liebe
Josselin Liebe
Ler
Web Scraping

€17,99 na França, €29,99 na Alemanha: monitoramento de preços por país

Mesma referência no ERP, preços diferentes por país: promoções, moedas e sortimento variam de uma loja para outra. Modelo de dados, exemplos de API e um script em Python para monitoramento confiável de preços.

Josselin Liebe
Josselin Liebe
Ler
Web Scraping

Melhor Scraper para Leboncoin 2026

Piloterr vs Apify vs lobstr.io para scraping no Leboncoin em 2026. Preços, endpoints e dados de produtos verificados a partir de fontes oficiais em 29 de junho de 2026 — incluindo a lacuna legal entre scraping público e autenticado.

Josselin Liebe
Josselin Liebe
Ler

Pronto para começar?

Sua API de web scraping está a um clique. Comece com +500 créditos, sem infraestrutura para configurar, sem proxies para gerenciar e sem cartão de crédito necessário.

  • +500 créditos
  • Sem cartão de crédito
  • Todos os endpoints incluídos