Puppeteer para Web Scraping: Um guia passo a passo

Última atualização em May 22, 2026

Se você já tentou extrair dados de um site que carrega conteúdo conforme você rola a página, esconde preços atrás de login ou parece mudar o layout a cada semana, sabe que a dificuldade é real. Os scrapers estáticos simplesmente já não dão conta. Na verdade, mais de já usam web scraping para dados alternativos, e automatizam o monitoramento de preços da concorrência. Mas aqui está o ponto-chave: grande parte desses dados vive em sites dinâmicos, carregados por JavaScript e ocultos por interações do usuário. É aí que entram a automação de navegador sem interface — e ferramentas como o Puppeteer.

Como alguém que passou anos construindo automação e ferramentas de IA (e, sim, extraindo dados de uma boa quantidade de sites para equipes de vendas e operações), vi de perto como o Puppeteer pode destravar dados que os scrapers tradicionais deixam passar. Mas também vi como a necessidade de programar pode ser uma barreira para usuários de negócio. Então, neste guia, vou mostrar exatamente o que é um puppeteer scraper, como usá-lo para puppeteer web scraping e quando talvez valha a pena recorrer a algo ainda mais simples — como o , nosso web scraper sem código, com IA.

O que é um Puppeteer Scraper? Uma visão geral rápida

puppeteer-scraper-data-extraction-automation.png Vamos começar pelo básico. é uma biblioteca open-source em Node.js do Google que permite controlar um navegador Chrome ou Chromium sem interface usando JavaScript. Em outras palavras: é como ter um robô que abre páginas, clica em botões, preenche formulários, rola a tela e — o mais importante — extrai dados, tudo isso sem exibir nada na sua tela.

O que torna o Puppeteer especial?

  • Ele consegue renderizar conteúdo dinâmico — ou seja, espera o JavaScript carregar, como um usuário real.
  • Ele consegue simular ações do usuário: clicar, digitar, rolar e até lidar com pop-ups.
  • É perfeito para raspar sites em que os dados só aparecem depois de alguma interação, como listas de e-commerce, feeds sociais ou painéis.

Como ele se compara a outras ferramentas?

  • Selenium: o clássico da automação de navegador. Funciona com vários navegadores e linguagens, mas é mais pesado e um pouco mais tradicional. Ótimo para testes multiplataforma, mas o Puppeteer costuma ser mais ágil em projetos com Chrome/Node.js.
  • Thunderbit: aqui é onde eu fico animado. O Thunderbit é um web scraper sem código, com IA, que funciona no seu navegador. Em vez de escrever scripts, você só clica em “AI Suggest Fields” e deixa a IA descobrir o que extrair. É perfeito para usuários de negócio que querem resultado sem código (falaremos mais disso daqui a pouco).

Resumindo: Puppeteer = controle máximo (se você programa). Thunderbit = praticidade máxima (se você não quer programar).

Por que o web scraping com Puppeteer importa para usuários de negócio

Vamos falar a real: web scraping já não é só coisa de hackers ou cientistas de dados. Equipes de vendas, operações, marketing e até imobiliárias estão usando dados da web para sair na frente. E, com tanta informação crítica para o negócio presa em sites dinâmicos, o Puppeteer muitas vezes é a chave para liberá-la.

Aqui vão alguns casos de uso reais:

Caso de usoQuem se beneficiaImpacto / ROI
Geração de leadsVendas, desenvolvimento de negóciosAutomatiza a montagem de listas de prospects; economiza mais de 8 horas/semana por representante (case study)
Monitoramento de preçosE-commerce, operações de produtoAcompanhamento da concorrência em tempo real; uma empresa economizou US$ 3,8 milhões/ano (source)
Pesquisa de mercadoMarketing, estratégia, finanças67% dos consultores de investimento usam dados extraídos da web; em alguns casos, ROI de até 890% (source)
Agregação imobiliáriaCorretores, analistasExtraia mais de 50 páginas de imóveis em minutos, não em horas (source)
Monitoramento de complianceOperações, jurídicoAutomatiza o acompanhamento; uma seguradora evitou US$ 50 milhões em penalidades (source)

E não podemos esquecer: gastam um quarto da semana com tarefas repetitivas, como coleta de dados. Automatizar isso com web scraping não é apenas um diferencial — é uma vantagem competitiva.

Começando: configurando seu Puppeteer scraper

Pronto para arregaçar as mangas? Veja como colocar o Puppeteer para rodar em menos de 10 minutos (assumindo que você esteja confortável com um pouco de JavaScript):

1. Instale o Node.js
O Puppeteer roda no Node.js. Baixe a versão LTS mais recente em .

2. Crie uma nova pasta de projeto
Abra o terminal e execute:

1mkdir puppeteer-scraper-demo
2cd puppeteer-scraper-demo
3npm init -y

3. Instale o Puppeteer

1npm install puppeteer

Isso também fará o download de uma versão compatível do Chromium (cerca de 100 MB).

4. Crie seu primeiro script
Crie um arquivo chamado scrape.js:

1const puppeteer = require('puppeteer');
2(async () => {
3  const browser = await puppeteer.launch();
4  const page = await browser.newPage();
5  await page.goto('https://example.com', { waitUntil: 'domcontentloaded' });
6  const title = await page.title();
7  console.log('Título da página:', title);
8  await browser.close();
9})();

Execute com:

1node scrape.js

Se você vir “Título da página: Example Domain”, parabéns — você acabou de automatizar o Chrome!

Criando seu primeiro script de web scraping com Puppeteer

Vamos ao prático. Suponha que você queira extrair citações de (um site de demonstração para scrapers).

Passo 1: acesse a página

1await page.goto('http://quotes.toscrape.com', { waitUntil: 'networkidle0' });

Passo 2: extraia os dados

1const quotes = await page.evaluate(() => {
2  return Array.from(document.querySelectorAll('.quote')).map(node => ({
3    text: node.querySelector('.text')?.innerText.trim(),
4    author: node.querySelector('.author')?.innerText.trim(),
5    tags: Array.from(node.querySelectorAll('.tag')).map(tag => tag.innerText.trim())
6  }));
7});
8console.log(quotes);

Passo 3: trate a paginação

1let hasNext = true;
2let allQuotes = [];
3while (hasNext) {
4  // Extraia as citações como acima
5  const quotes = await page.evaluate(/* ... */);
6  allQuotes.push(...quotes);
7  const nextButton = await page.$('li.next > a');
8  if (nextButton) {
9    await Promise.all([
10      page.click('li.next > a'),
11      page.waitForNavigation({ waitUntil: 'networkidle0' })
12    ]);
13  } else {
14    hasNext = false;
15  }
16}

Passo 4: salve em JSON

1const fs = require('fs');
2fs.writeFileSync('quotes.json', JSON.stringify(allQuotes, null, 2));

E pronto — um Puppeteer scraper básico que navega, extrai, pagina e salva dados.

Técnicas avançadas de Puppeteer scraper: lidando com conteúdo dinâmico

A maioria dos sites reais não é tão simples quanto uma lista estática. Veja como lidar com as partes mais difíceis:

1. Aguardando elementos dinâmicos

1await page.waitForSelector('.product-list-item');

Isso garante que o conteúdo desejado foi carregado antes de você tentar capturá-lo.

2. Simulando ações do usuário

  • Clicar em um botão: await page.click('#load-more');
  • Digitar em um campo: await page.type('#search', 'laptop');
  • Rolar para scroll infinito:
    1// Observação: page.waitForTimeout foi removido no Puppeteer v22. Use uma promise simples no lugar.
    2const sleep = (ms) => new Promise(r => setTimeout(r, ms));
    3let previousHeight = await page.evaluate('document.body.scrollHeight');
    4while (true) {
    5  await page.evaluate('window.scrollTo(0, document.body.scrollHeight)');
    6  await sleep(1500);
    7  const newHeight = await page.evaluate('document.body.scrollHeight');
    8  if (newHeight === previousHeight) break;
    9  previousHeight = newHeight;
    10}

1**3. Lidando com logins**
2```javascript
3await page.goto('https://exampleshop.com/login');
4await page.type('#login-username', 'myusername');
5await page.type('#login-password', 'mypassword');
6await page.click('#login-button');
7await page.waitForNavigation({ waitUntil: 'networkidle0' });

4. Lidando com dados carregados por AJAX Às vezes, os dados não estão no DOM, mas vêm de uma chamada de API. Você pode interceptar as respostas de rede com:

1page.on('response', async response => {
2  if (response.url().includes('/api/products')) {
3    const data = await response.json();
4    // Processar dados
5  }
6});

Exemplo real: extraindo dados de produtos de um site de e-commerce

Vamos juntar tudo. Imagine que você queira extrair nomes, preços e imagens de produtos de um site de e-commerce (de demonstração) depois de fazer login.

1const puppeteer = require('puppeteer');
2const fs = require('fs');
3(async () => {
4  const browser = await puppeteer.launch({ headless: true });
5  const page = await browser.newPage();
6  // Passo 1: faça login
7  await page.goto('https://exampleshop.com/login');
8  await page.type('#login-username', 'myusername');
9  await page.type('#login-password', 'mypassword');
10  await page.click('#login-button');
11  await page.waitForNavigation({ waitUntil: 'networkidle0' });
12  // Passo 2: vá para a página da categoria
13  await page.goto('https://exampleshop.com/category/laptops', { waitUntil: 'networkidle0' });
14  // Passo 3: extraia os produtos
15  const products = await page.evaluate(() => {
16    return Array.from(document.querySelectorAll('.product-item')).map(item => ({
17      name: item.querySelector('.product-title')?.innerText.trim() || '',
18      price: item.querySelector('.product-price')?.innerText.trim() || '',
19      image: item.querySelector('img.product-image')?.src || ''
20    }));
21  });
22  // Passo 4: salve em JSON
23  fs.writeFileSync('products.json', JSON.stringify(products, null, 2));
24  await browser.close();
25})();

Esse script faz login, navega, extrai e salva — tudo automaticamente. Para necessidades mais avançadas, você pode adicionar loops de paginação ou até clicar em cada produto para obter mais detalhes.

Thunderbit: tornando o Puppeteer scraper mais simples com IA

Agora, se você chegou até aqui e está pensando “Isso é legal, mas eu não quero escrever código toda vez que precisar de um novo conjunto de dados”, você não está sozinho. É exatamente por isso que criamos o .

O que torna o Thunderbit diferente?

  • Sem necessidade de código: basta instalar a , abrir a página que deseja extrair e clicar em “AI Suggest Fields”.
  • Detecção de campos com IA: o Thunderbit lê a página e sugere as melhores colunas para extrair — como “Nome do produto”, “Preço”, “Imagem” etc.
  • Lida com conteúdo dinâmico: scroll infinito, pop-ups e subpáginas? A IA do Thunderbit consegue lidar com isso, clicando pela paginação ou até visitando a página de detalhes de cada produto para enriquecer seus dados.
  • Exportação instantânea: envie seus dados diretamente para Excel, Google Sheets, Notion ou Airtable com um clique. Sem custo extra para exportações.
  • Modelos para sites populares: precisa extrair dados da Amazon, Zillow ou LinkedIn? O Thunderbit tem modelos instantâneos — sem necessidade de configuração.
  • Extração na nuvem ou no navegador: para tarefas grandes, o Thunderbit pode extrair até 50 páginas de uma vez na nuvem.

Já vi usuários passarem de “queria conseguir obter esses dados” para “aqui está minha planilha” em menos de cinco minutos. E o melhor? Nada de se preocupar com scripts quebrando quando o site muda — a IA do Thunderbit se adapta em tempo real.

Puppeteer vs. Thunderbit: escolhendo a ferramenta certa de web scraping

Então, qual você deve usar? Eu costumo resumir assim para as equipes:

FatorPuppeteer (código)Thunderbit (sem código, IA)
Facilidade de usoExige conhecimento de JavaScript e DOMClique e selecione; a IA sugere os campos
Velocidade de configuraçãoDe horas a dias para tarefas complexasMinutos — basta instalar e começar
Controle/flexibilidadeMáximo: escreva qualquer lógica personalizada, integre com outro códigoAlto em casos padrão; menos adequado para fluxos altamente personalizados
Conteúdo dinâmicoProgramação manual para esperas, cliques e rolagemA IA integrada lida automaticamente com conteúdo dinâmico, paginação e subpáginas
ManutençãoOs scripts são seus — atualize quando os sites mudaremA IA se adapta a mudanças de layout; menos manutenção para o usuário
Exportação de dadosVocê precisa escrever sua própria lógica de exportaçãoExportação com um clique para Excel, Sheets, Notion, Airtable, CSV, JSON
Melhor paraDesenvolvedores, raspagens altamente personalizadas ou em grande escalaUsuários de negócio, projetos rápidos e equipes sem perfil técnico
CustoGrátis (exceto seu tempo e qualquer infraestrutura)Há plano gratuito; planos pagos por créditos (veja Preços do Thunderbit)

Em resumo:

  • Use o Puppeteer se precisar de controle total, tiver recursos de programação ou quiser integrar a extração a um app maior.
  • Use o Thunderbit se quiser resultados rápidos, não quiser programar ou precisar capacitar colegas sem perfil técnico.

Sinceramente, já vi equipes usarem os dois: Thunderbit para ganhos rápidos e protótipos, Puppeteer para integrações profundas ou casos extremos.

Checklist passo a passo: executando um projeto bem-sucedido de web scraping com Puppeteer

scraping-project-checklist-steps.png Aqui está meu checklist preferido para um projeto de scraping com Puppeteer sem percalços:

  1. Defina seus objetivos: de quais dados você precisa? Onde eles estão?
  2. Analise o site: ele é dinâmico? Precisa de login? Existem medidas anti-bot?
  3. Prepare seu ambiente: Node.js, Puppeteer e quaisquer bibliotecas auxiliares.
  4. Escreva uma prova de conceito: comece com uma página e acerte os seletores.
  5. Trate o conteúdo dinâmico: use waitForSelector e simule cliques/rolagem conforme necessário.
  6. Adicione paginação ou loops: extraia todas as páginas, não apenas uma.
  7. Implemente táticas anti-bloqueio: randomize atrasos, defina um User-Agent real e use proxies se necessário.
  8. Exporte e valide os dados: salve em JSON/CSV e verifique se está tudo completo.
  9. Otimize e trate erros: adicione try/catch, registre o progresso e lide com dados ausentes com elegância.
  10. Monitore e mantenha: os sites mudam — esteja pronto para atualizar seu script.

Dicas de solução de problemas:

  • Se os seletores retornarem null, confira o HTML com cuidado e use esperas.
  • Se você for bloqueado, diminua a velocidade, alterne IPs ou use plugins stealth.
  • Se seu script travar, verifique vazamentos de memória ou exceções não tratadas.

Conclusão e principais aprendizados

Web scraping virou uma habilidade indispensável para equipes orientadas por dados. O Puppeteer oferece o poder de extrair dados até dos sites mais dinâmicos e carregados de JavaScript — mas exige alguma habilidade de programação e manutenção contínua. Para usuários de negócio que querem pular o código e ir direto aos dados, o Thunderbit oferece uma alternativa com IA, sem código, rápida, flexível e surpreendentemente robusta.

Minha recomendação:

  • Se você é técnico e precisa de personalização profunda, comece com o Puppeteer.
  • Se você quer velocidade, simplicidade e menos manutenção, teste o (a é um ótimo ponto de partida).
  • Para a maioria das equipes, uma combinação dos dois cobre 99% das necessidades de dados da web.

Quer ver mais guias como este? Confira o para tutoriais, comparações e as novidades mais recentes em web scraping com IA.

Experimente o Thunderbit AI Web Scraper

FAQs

1. O que é um Puppeteer scraper e por que ele é usado para web scraping?
Puppeteer é uma biblioteca Node.js que permite controlar um navegador Chrome sem interface com JavaScript. Ela é usada para web scraping porque consegue carregar conteúdo dinâmico, simular ações do usuário e extrair dados de sites que os scrapers tradicionais não conseguem lidar.

2. Como o Puppeteer se compara ao Selenium e ao Thunderbit?
O Selenium funciona com vários navegadores e linguagens, mas é mais pesado. O Puppeteer é mais enxuto para Chrome/Node.js e costuma ser mais rápido em muitas tarefas de scraping. O Thunderbit, por outro lado, é uma ferramenta sem código, com IA, que permite a usuários sem conhecimento técnico extrair dados com apenas alguns cliques.

3. Quais são os principais benefícios de negócio do web scraping com Puppeteer?
Automatizar a coleta de dados economiza tempo, reduz erros e permite insights em tempo real para vendas, marketing, operações e muito mais. Os casos de uso vão de geração de leads a monitoramento de preços e pesquisa de mercado.

4. Quais são os maiores desafios ao fazer scraping com Puppeteer?
Os principais desafios são lidar com conteúdo dinâmico, evitar bloqueios anti-bot e manter os scripts quando os sites mudam. Será preciso escrever código para gerenciar esperas, simular interações e tratar erros.

5. Quando devo usar o Thunderbit em vez do Puppeteer?
Use o Thunderbit se quiser evitar programação, precisar de resultados rápidos ou quiser capacitar colegas sem perfil técnico. Ele é ideal para tarefas padrão de scraping, projetos com prazo curto ou quando você só quer exportar dados para Excel ou Google Sheets com o mínimo de esforço.

Pronto para experimentar uma forma mais inteligente de extrair dados? ou aprofunde-se com mais guias no . Boas extrações!

Saiba mais

Shuai Guan
Shuai Guan
CEO da Thunderbit | Especialista em automação de dados com IA Shuai Guan é CEO da Thunderbit e ex-aluno da Faculdade de Engenharia da Universidade de Michigan. Com quase uma década de experiência em tecnologia e arquitetura SaaS, ele se especializa em transformar modelos complexos de IA em ferramentas práticas de extração de dados sem código. Neste blog, compartilha insights diretos e testados em campo sobre web scraping e estratégias de automação para ajudar você a criar fluxos de trabalho mais inteligentes e orientados por dados. Quando não está otimizando fluxos de dados, aplica o mesmo olhar atento aos detalhes à sua paixão pela fotografia.
Topics
Puppeteer scraperPuppeteer web scraping

Experimente o Thunderbit

Extraia leads e outros dados em apenas 2 cliques. Com IA.

Obtenha o Thunderbit É grátis
Extraia dados usando IA
Transfira dados facilmente para Google Sheets, Airtable ou Notion
PRODUCT HUNT#1 Product of the Week