CAPSOLVER
Blog
O que é o Puppeteer e como usá-lo na coleta de dados da web | Guia Completo 2024

O que é o Puppeteer e como usá-lo em web scraping | Guia Completo 2026

Logo of CapSolver

Nikolai Smirnov

Software Development Lead

03-Dec-2025

A raspagem de dados da web tornou-se uma habilidade essencial para qualquer pessoa envolvida na extração de dados da web. Seja você um desenvolvedor, cientista de dados ou entusiasta que busca coletar informações de sites, o Puppeteer é uma das ferramentas mais poderosas disponíveis. Este guia completo irá explorar o que é o Puppeteer e como usá-lo de forma eficaz na raspagem de dados da web.

Introdução ao Puppeteer

O Puppeteer é uma biblioteca Node que fornece uma API de alto nível para controlar o Chrome ou Chromium por meio do Protocolo DevTools. Ele é mantido pela equipe do Google Chrome e oferece aos desenvolvedores a capacidade de realizar uma variedade de tarefas de navegador, como gerar capturas de tela, raspagem de sites e, principalmente, raspagem de dados da web. O Puppeteer é muito popular por sua capacidade de navegação sem interface gráfica, o que significa que pode ser executado sem uma interface gráfica, sendo ideal para tarefas automatizadas.

Resgate seu código promocional do CapSolver

Aumente seu orçamento de automação instantaneamente!
Use o código promocional CAPN ao recarregar sua conta do CapSolver para obter um bônus adicional de 5% em cada recarga — sem limites.
Resgate-o agora em seu Painel do CapSolver
.

Por que usar o Puppeteer para raspagem de dados da web?

Axios e Cheerio são boas opções para raspagem de dados da web em JavaScript, mas têm limitações: lidar com conteúdo dinâmico e contornar mecanismos de anti-raspagem.

Como um navegador sem interface gráfica, o Puppeteer se destaca na raspagem de conteúdo dinâmico. Ele carrega totalmente a página de destino, executa JavaScript e pode até disparar solicitações XHR para recuperar dados adicionais. Isso é algo que raspadores estáticos não conseguem, especialmente com aplicações de página única (SPAs), onde o HTML inicial carece de dados significativos.

O que mais o Puppeteer pode fazer? Ele pode renderizar imagens, capturar capturas de tela e tem extensão para resolver diversos tipos de captcha, como reCAPTCHA, captcha, captcha. Por exemplo, você pode programar seu script para navegar por uma página, capturar capturas de tela em intervalos específicos e analisar essas imagens para obter insights competitivos. As possibilidades são virtualmente ilimitadas!

Uso simples do Puppeteer

Nós completamos a primeira parte do ScrapingClub usando Selenium e Python. Agora, vamos usar o Puppeteer para completar a segunda parte

Antes de começar, certifique-se de que o Puppeteer está instalado em sua máquina local. Caso contrário, você pode instalá-lo usando os seguintes comandos:

bash Copy
npm i puppeteer # Baixa o Chrome compatível durante a instalação.
npm i puppeteer-core # Alternativamente, instale como uma biblioteca, sem baixar o Chrome.

Acessando uma página da web

javascript Copy
const puppeteer = require('puppeteer');

(async function() {
    const browser = await puppeteer.launch({headless: false});
    const page = await browser.newPage();
    await page.goto('https://scrapingclub.com/exercise/detail_json/');

    // Pausa por 5 segundos
    await new Promise(r => setTimeout(r, 5000));
    await browser.close();
})();

O método puppeteer.launch é usado para iniciar uma nova instância do Puppeteer e pode aceitar um objeto de configuração com várias opções. A mais comum é headless, que especifica se o navegador deve ser executado em modo sem interface gráfica. Se você não especificar esse parâmetro, ele será definido como true. Outras opções comuns de configuração são as seguintes:

Parâmetro Tipo Valor Padrão Descrição Exemplo
args string[] Array de argumentos da linha de comando a serem passados ao iniciar o navegador args: ['--no-sandbox', '--disable-setuid-sandbox']
debuggingPort number Especifica o número da porta de depuração a ser usada debuggingPort: 8888
defaultViewport dict {width: 800, height: 600} Define o tamanho padrão da viewport defaultViewport: {width: 1920, height: 1080}
devtools boolean false Se deve abrir automaticamente o DevTools devtools: true
executablePath string Especifica o caminho para o executável do navegador executablePath: '/caminho/para/o/chrome'
headless boolean ou 'shell' true Se o navegador deve ser executado em modo sem interface gráfica headless: false
userDataDir string Especifica o caminho para o diretório de dados do usuário userDataDir: '/caminho/para/dados/do/usuario'
timeout number 30000 Tempo limite em milissegundos para esperar o navegador iniciar timeout: 60000
ignoreHTTPSErrors boolean false Se deve ignorar erros HTTPS ignoreHTTPSErrors: true

Definindo o tamanho da janela

Para obter a melhor experiência de navegação, precisamos ajustar dois parâmetros: o tamanho da viewport e o tamanho da janela do navegador. O código é o seguinte:

javascript Copy
const puppeteer = require('puppeteer');

(async function() {
    const browser = await puppeteer.launch({
        headless: false,
        args: ['--window-size=1920,1080']
    });
    const page = await browser.newPage();
    await page.setViewport({width: 1920, height: 1080});
    await page.goto('https://scrapingclub.com/exercise/detail_json/');

    // Pausa por 5 segundos
    await new Promise(r => setTimeout(r, 5000));
    await browser.close();
})();

Extração de dados

No Puppeteer, existem vários métodos para extrair dados.

  1. Usando o método evaluate

    O método evaluate executa código JavaScript no contexto do navegador para extrair os dados necessários.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const data = await page.evaluate(() => {
            const image = document.querySelector('.card-img-top').src;
            const title = document.querySelector('.card-title').innerText;
            const price = document.querySelector('.card-price').innerText;
            const description = document.querySelector('.card-description').innerText;
            return {image, title, price, description};
        });
    
        console.log('Nome do produto:', data.title);
        console.log('Preço do produto:', data.price);
        console.log('Imagem do produto:', data.image);
        console.log('Descrição do produto:', data.description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  2. Usando o método $eval

    O método $eval seleciona um único elemento e extrai seu conteúdo.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const title = await page.$eval('.card-title', el => el.innerText);
        const price = await page.$eval('.card-price', el => el.innerText);
        const image = await page.$eval('.card-img-top', el => el.src);
        const description = await page.$eval('.card-description', el => el.innerText);
    
        console.log('Nome do produto:', title);
        console.log('Preço do produto:', price);
        console.log('Imagem do produto:', image);
        console.log('Descrição do produto:', description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  3. Usando o método $$eval

    O método $$eval seleciona vários elementos de uma vez e extrai seus conteúdos.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const data = await page.$$eval('.my-8.w-full.rounded.border > *', elements => {
            const image = elements[0].querySelector('img').src;
            const title = elements[1].querySelector('.card-title').innerText;
            const price = elements[1].querySelector('.card-price').innerText;
            const description = elements[1].querySelector('.card-description').innerText;
            return {image, title, price, description};
        });
    
        console.log('Nome do produto:', data.title);
        console.log('Preço do produto:', data.price);
        console.log('Imagem do produto:', data.image);
        console.log('Descrição do produto:', data.description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();
  4. Usando os métodos page.$ e evaluate

    O método page.$ seleciona elementos, e o método evaluate executa código JavaScript no contexto do navegador para extrair dados.

    javascript Copy
    const puppeteer = require('puppeteer');
    
    (async function () {
        const browser = await puppeteer.launch({
            headless: false,
            args: ['--window-size=1920,1080']
        });
        const page = await browser.newPage();
        await page.setViewport({width: 1920, height: 1080});
        await page.goto('https://scrapingclub.com/exercise/detail_json/');
    
        const imageElement = await page.$('.card-img-top');
        const titleElement = await page.$('.card-title');
        const priceElement = await page.$('.card-price');
        const descriptionElement = await page.$('.card-description');
        const image = await page.evaluate(el => el.src, imageElement);
        const title = await page.evaluate(el => el.innerText, titleElement);
        const price = await page.evaluate(el => el.innerText, priceElement);
        const description = await page.evaluate(el => el.innerText, descriptionElement);
    
        console.log('Nome do produto:', title);
        console.log('Preço do produto:', price);
        console.log('Imagem do produto:', image);
        console.log('Descrição do produto:', description);
    
        // Pausa por 5 segundos
        await new Promise(r => setTimeout(r, 5000));
        await browser.close();
    })();

Bypassando proteções contra raspagem

Completar os exercícios do ScrapingClub é relativamente simples. No entanto, em cenários reais de raspagem de dados, obter dados nem sempre é tão fácil. Alguns sites utilizam tecnologias de anti-raspagem que podem detectar seu script como um robô e bloqueá-lo. A situação mais comum envolve desafios de CAPTCHA, como captcha, captcha, recaptcha, captcha e captcha.

Para resolver esses desafios de CAPTCHA, é necessário ter experiência extensa em machine learning, engenharia reversa e medidas de contramedida de fingerprinting de navegador, o que pode exigir muito tempo.

Felizmente, você não precisa mais lidar com todo esse trabalho sozinho. CapSolver oferece uma solução abrangente que ajuda você a resolver todos os desafios facilmente. O CapSolver oferece uma extensão de navegador que permite resolver automaticamente desafios de CAPTCHA enquanto realiza raspagem de dados com o Puppeteer. Além disso, fornece um método de API para resolver CAPTCHAS e obter tokens. Tudo isso pode ser feito em poucos segundos. Confira este documento para descobrir como resolver os diversos correspondentes de CAPTCHA que você encontrou!

Conclusão

A raspagem de dados da web é uma habilidade valiosa para qualquer pessoa envolvida na extração de dados da web, e o Puppeteer, como uma ferramenta com uma API avançada e recursos poderosos, é uma das melhores escolhas para alcançar esse objetivo. Sua capacidade de lidar com conteúdo dinâmico e resolver mecanismos de anti-raspagem o destaca entre as ferramentas de raspagem.

Neste guia, exploramos o que é o Puppeteer, suas vantagens na raspagem de dados da web e como configurá-lo e usá-lo de forma eficaz. Mostramos com exemplos como acessar páginas da web, definir tamanhos de viewport e extrair dados usando vários métodos. Além disso, discutimos os desafios impostos pelas tecnologias de anti-raspagem e como o CapSolver fornece uma solução poderosa para o desafio de CAPTCHA.

Perguntas Frequentes

1. Para o que o Puppeteer é principalmente usado na raspagem de dados da web?

O Puppeteer é usado para controlar um navegador Chrome/Chromium real, permitindo que ele carregue JavaScript dinâmico, renderize páginas de aplicações de página única (SPAs), interaja com elementos e extraia dados que raspadores baseados em HTTP normais não conseguem acessar.


2. O Puppeteer pode lidar com desafios de CAPTCHA em sites?

O Puppeteer sozinho não pode contornar CAPTCHAS, mas quando combinado com a extensão de navegador do CapSolver ou com sua API, ele pode resolver automaticamente reCAPTCHA, hCaptcha, FunCAPTCHA e outros desafios de verificação durante tarefas de raspagem.


Não. O Puppeteer suporta o modo sem interface gráfica, onde o Chrome é executado sem GUI. Este modo é mais rápido e ideal para automação. Você também pode executar no modo não sem interface gráfica para depuração ou monitoramento visual.

Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais

Dados como Serviço (DaaS): O que é e por que importa em 2026
Dados como Serviço (DaaS): O que é e por que importa em 2026

Entenda Dados como Serviço (DaaS) em 2026. Descubra seus benefícios, casos de uso e como transforma os negócios com visões em tempo real e escalabilidade.

web scraping
Logo of CapSolver

Ethan Collins

12-Feb-2026

Como corrigir erros comuns de raspagem da web em 2026
Como corrigir erros comuns de raspagem da web em 2026

Dominar a correção de diversos erros de raspagem de web, como 400, 401, 402, 403, 429, 5xx e 1001 do Cloudflare em 2026. Aprenda estratégias avançadas para rotação de IPs, cabeçalhos e limitação de taxa adaptativa com o CapSolver.

web scraping
Logo of CapSolver

Rajinder Singh

05-Feb-2026

RoxyBrowser com Integração CapSolver
Como resolver Captcha no RoxyBrowser com integração do CapSolver

Integre o CapSolver com o RoxyBrowser para automatizar tarefas do navegador e contornar o reCAPTCHA, o Turnstile e outros CAPTCHAS.

web scraping
Logo of CapSolver

Adélia Cruz

04-Feb-2026

Easyspider CapSolver Integração de Captcha
Como resolver Captcha no EasySpider com integração do CapSolver

EasySpider é uma ferramenta de raspagem de web e automação do navegador visual e sem código, e quando combinado com o CapSolver, pode resolver de forma confiável CAPTCHAs como reCAPTCHA v2 e Cloudflare Turnstile, permitindo a extração de dados automatizada sem interrupções em sites.

web scraping
Logo of CapSolver

Adélia Cruz

04-Feb-2026

Relevância AI com CapSolver
Como resolver reCAPTCHA v2 no Relevance AI com integração da CapSolver

Construa uma ferramenta da Relevance AI para resolver reCAPTCHA v2 usando o CapSolver. Automatize os envios de formulários via API sem automação de navegador.

web scraping
Logo of CapSolver

Adélia Cruz

03-Feb-2026

Ferramentas de Raspagem de Dados Instantâneas: Formas Rápidas de Extrair Dados da Web Sem Código
Ferramentas de Raspagem de Dados Instantâneas: Métodos Rápidos para Extrair Dados da Web Sem Código

Descubra as melhores ferramentas de raspagem de dados instantâneas para 2026. Aprenda formas rápidas de extrair dados da web sem código usando as melhores extensões e APIs para extração automatizada.

web scraping
Logo of CapSolver

Emma Foster

28-Jan-2026