CAPSOLVER
Blog
O que é Puppeteer e como usar na raspagem de dados | Guia Completo 2024

O que é Puppeteer e como usar na raspagem de dados | Guia Completo 2024

Logo of CapSolver

Adélia Cruz

Neural Network Developer

10-Jul-2024

A raspagem de dados tornou-se uma habilidade crucial para qualquer pessoa que lida com extração de dados da web. Se você é um desenvolvedor, cientista de dados ou entusiasta procurando reunir informações de sites, o Puppeteer é uma das ferramentas mais poderosas à sua disposição. Este guia completo irá explorar o que é o Puppeteer e como utilizá-lo efetivamente 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 o Chromium através do Protocolo DevTools. É mantido pela equipe do Google Chrome e oferece aos desenvolvedores a capacidade de realizar uma variedade de tarefas do navegador, como gerar capturas de tela, raspar websites e, mais importante, fazer raspagem de dados da web. O Puppeteer é altamente popular devido às suas capacidades de navegação sem interface gráfica, o que o torna ideal para tarefas automatizadas.

Lutando com falhas repetidas na resolução completa do irritante captcha? Descubra a resolução automática e sem problemas de captchas com a tecnologia AI-powered Auto Web Unblock do CapSolver!

Reivindique seu Código de Bônus para as principais soluções de captcha; CapSolver: WEBS. Depois de resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitado.

Por que usar o Puppeteer para raspagem de dados?

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

Como um navegador sem cabeça, o Puppeteer se destaca na raspagem de conteúdo dinâmico. Ele carrega completamente a página-alvo, executa JavaScript e pode até mesmo disparar solicitações XHR para recuperar dados adicionais. Isso é algo que raspadores estáticos não conseguem alcançar, especialmente com Aplicações de Página Única (SPAs) onde o HTML inicial não contém dados significativos.

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

Uso Simples do Puppeteer

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

Antes de começarmos, certifique-se de ter o Puppeteer instalado em sua máquina local. Se ainda não tiver, você pode instalá-lo usando os seguintes comandos:

bash Copy
npm i puppeteer # Faz o download do Chrome compatível durante a instalação.
npm i puppeteer-core # Alternativamente, instala como uma biblioteca, sem fazer o download do 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. O mais comum é headless, que especifica se o navegador deve ser executado no modo sem cabeça. Se você não especificar este parâmetro, ele será padrão para 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 para passar ao iniciar o navegador args: ['--no-sandbox', '--disable-setuid-sandbox']
debuggingPort number Especifica a 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: '/path/to/chrome'
headless boolean ou 'shell' true Se deve executar o navegador no modo sem cabeça headless: false
userDataDir string Especifica o caminho para o diretório de dados do usuário userDataDir: '/path/to/user/data'
timeout number 30000 Tempo limite em milissegundos para aguardar o navegador iniciar timeout: 60000
ignoreHTTPSErrors boolean false Se deve ignorar erros HTTPS ignoreHTTPSErrors: true

Configurando 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();
})();

Extraindo 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();
    })();

Contornando Proteções Anti-Raspagem

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

Para resolver esses desafios CAPTCHA, é necessário ter experiência extensiva em aprendizado de máquina, engenharia reversa e contramedidas de impressão digital do navegador, o que pode consumir uma quantidade significativa de tempo.

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

Conclusão

A raspagem de dados é uma habilidade inestimável 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 anti-raspagem o destaca entre as ferramentas de raspagem disponíveis.

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

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

Como o CAPTCHA Funciona?
Como Funciona o CAPTCHA?

Explore o funcionamento complexo do CAPTCHA: da diferenciação entre humanos e robôs, papéis no treinamento da IA, até os mecanismos do reCAPTCHA, revelando a combinação entre segurança e evolução da IA

The other captcha
Logo of CapSolver

Adélia Cruz

29-Dec-2025

Como resolver qualquer captcha usando um serviço de resolução de captcha - Capsolver
Como resolver qualquer captcha usando um serviço de resolução de captcha - CapSolver

Descubra o CapSolver: um serviço impulsionado por IA para resolver qualquer CAPTCHA, de reCAPTCHA para hCaptcha, com preços flexíveis e desempenho confiável.

The other captcha
Logo of CapSolver

Adélia Cruz

29-Dec-2025

Capsolver - Resolver Captcha
Capsolver - Solucionador de Captcha

Descubra as soluções de captchas de IA e ML da Capsolver, oferecendo uma gama de serviços como reCAPTCHA, Cloudflare Turnstile e mais, com preços flexíveis e integração fácil.

The other captcha
Logo of CapSolver

Adélia Cruz

26-Dec-2025

captcha
O que são CAPTCHAs, a frustração e os diferentes tipos de CAPTCHAs

Faça uma jornada pelo mundo dos CAPTCHAs em nosso último post de blog, "O que são CAPTCHAs? Explorando a frustração e as variedades dos CAPTCHAs." Este guia abrangente explora a essência dos CAPTCHAs, esses testes comuns que determinam se você é humano ou um robô. Discutimos seu propósito, as razões pelas quais eles frequentemente levam à frustração e o amplo conjunto de tipos de CAPTCHA que existem. Do reconhecimento de imagem simples à resolução de puzzles complexos, este post de blog revelará a parte frequentemente ignorada, mas essencial de nossas vidas digitais.

The other captcha
Logo of CapSolver

Aloísio Vítor

23-Dec-2025

Top 10 Métodos de Coleta de Dados
Top 10 Métodos de Coleta de Dados para Inteligência Artificial e Aprendizado de Máquina

Descubra os 10 melhores métodos de coleta de dados para IA e ML, com foco em Throughput, Cost e Scalability. Aprenda como a resolução de captchas com inteligência artificial da CapSolver garante a coleta estável de dados para seus projetos.

The other captcha
Logo of CapSolver

Rajinder Singh

22-Dec-2025

Como resolver MTCaptcha com Python
Como resolver MTCaptcha com Python

Neste artigo, vamos mostrar para você como resolver MTCaptcha com Python

The other captcha
Logo of CapSolver

Aloísio Vítor

18-Dec-2025