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

Raspagem de Web com Selenium e Python
Web Scraping com Selenium e Python | Resolvendo Captcha Ao Fazer Web Scraping

Neste artigo, você vai se familiarizar com a raspagem de dados da web usando o Selenium e o Python, e aprender a resolver o Captcha envolvido no processo para uma extração de dados eficiente.

web scraping
Logo of CapSolver

Anh Tuan

04-Dec-2025

Web Scraping em Golang com Colly
Web Scraping em Golang com Colly

Neste blog, exploramos o mundo da raspagem de web usando a biblioteca Colly em Golang. O guia começa ajudando você a configurar seu projeto Golang e instalar o pacote Colly. Em seguida, percorreremos a criação de um raspador básico para extrair links de uma página da Wikipedia, demonstrando a facilidade de uso e os recursos poderosos do Colly.

web scraping
Logo of CapSolver

Adélia Cruz

04-Dec-2025

O que é Web Scraping
O que é Web Scraping | Casos de uso comuns e problemas

Conheça o web scraping: aprenda seus benefícios, resolva desafios com facilidade e impulso seu negócio com o CapSolver.

web scraping
Logo of CapSolver

Ethan Collins

03-Dec-2025

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

Este guia completo vai explorar o que é o Puppeteer e como usá-lo de forma eficaz na raspagem de web.

web scraping
Logo of CapSolver

Nikolai Smirnov

03-Dec-2025

Como Fazer um Agente de IA para Coleta de Dados da Web (Tutorial para Iniciantes)
Como Fazer um Scraper de Web com Agente de IA (Guia Amigável para Iniciantes)

Aprenda como criar um raspador de web de agente de IA do zero com este tutorial amigável para iniciantes. Descubra os componentes principais, exemplos de código e como burlar medidas anti-bot como os CAPTCHAs para coleta de dados confiável.

web scraping
Logo of CapSolver

Adélia Cruz

02-Dec-2025

Como Integrar a Resolução de CAPTCHA no Seu Fluxo de Trabalho de Scraping com IA
Como integrar a resolução de CAPTCHA no seu fluxo de trabalho de raspagem com IA

Domine a integração de serviços de resolução de CAPTCHA no seu fluxo de trabalho de scraping com IA. Aprenda melhores práticas para reCAPTCHA v3, Cloudflare e AWS WAF para garantir uma coleta de dados confiável e em grande volume.

web scraping
Logo of CapSolver

Adélia Cruz

28-Nov-2025