Raspagem da Web com Puppeteer: Detectando Mudanças no Site e Tirando Capturas de Tela

Adélia Cruz
Neural Network Developer
07-Oct-2024

A coleta de dados da web se tornou uma ferramenta essencial para automatizar a coleta de dados e monitorar sites em busca de alterações. Nesta postagem do blog, exploraremos como usar o Puppeteer, uma biblioteca Node.js, para coleta de dados da web, detectar alterações em um site e tirar capturas de tela dessas alterações.
O que é Puppeteer?
Puppeteer é uma biblioteca Node.js que fornece uma API de alto nível para controlar o Chrome ou Chromium sem cabeça por meio do protocolo DevTools. Ele pode ser usado para coleta de dados da web, testes automatizados ou até mesmo gerar capturas de tela e PDFs de páginas da web.
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte instalado:
Você pode instalar o Puppeteer executando o seguinte comando no seu terminal:
bash
npm install puppeteer
Coleta de dados da web básica com Puppeteer
Para começar, vamos criar um coletor de dados da web básico que navega até um site e extrai o conteúdo de texto.
javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navegue até o site
await page.goto('https://example.com');
// Extraia o conteúdo de texto
const content = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log('Conteúdo da página:', content);
await browser.close();
})();
Este script abre um navegador sem cabeça, navega até example.com e extrai o texto do elemento <h1>. Você pode substituir o URL pelo site que deseja coletar dados e ajustar o seletor para corresponder ao elemento que lhe interessa.
Tirando capturas de tela com Puppeteer
O Puppeteer permite que você tire capturas de tela de páginas da web facilmente. Você pode capturar capturas de tela de página inteira ou áreas específicas da página.
Aqui está como tirar uma captura de tela de página inteira:
javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navegue até o site
await page.goto('https://example.com');
// Tire uma captura de tela de página inteira
await page.screenshot({ path: 'screenshot.png', fullPage: true });
await browser.close();
})();
Este script salva uma captura de tela de toda a página como screenshot.png. Você pode modificar o path para especificar um nome de arquivo ou local diferente.
Detectando alterações no site
Monitorar um site em busca de alterações é um recurso útil na coleta de dados da web. Você pode fazer isso verificando repetidamente o conteúdo do site e comparando-o com uma versão salva anteriormente.
Aqui está um exemplo de como detectar alterações de texto e tirar uma captura de tela se o conteúdo mudar:
javascript
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navegue até o site
await page.goto('https://example.com');
// Extraia o conteúdo de texto
const currentContent = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
const previousContentPath = 'previous-content.txt';
let previousContent = '';
// Verifique se o conteúdo anterior existe
if (fs.existsSync(previousContentPath)) {
previousContent = fs.readFileSync(previousContentPath, 'utf8');
}
// Compare o conteúdo atual com o conteúdo anterior
if (currentContent !== previousContent) {
console.log('O conteúdo mudou!');
// Salve o novo conteúdo
fs.writeFileSync(previousContentPath, currentContent);
// Tire uma captura de tela da alteração
await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
console.log('Captura de tela salva!');
} else {
console.log('Nenhuma alteração detectada.');
}
await browser.close();
})();
Neste exemplo:
- O script extrai o conteúdo do elemento
<h1>. - Ele compara o conteúdo atual com uma versão salva anteriormente (
previous-content.txt). - Se uma alteração for detectada, ele tira uma captura de tela e a salva com um carimbo de data/hora no nome do arquivo, garantindo que cada captura de tela seja única.
- O novo conteúdo é salvo em
previous-content.txtpara comparações futuras.
Agendando o coletor de dados para executar regularmente
Você pode usar o Node.js para agendar este script para executar em intervalos usando o pacote node-cron.
Primeiro, instale node-cron:
bash
npm install node-cron
Agora, modifique seu script para executar em um intervalo definido (por exemplo, a cada 5 minutos):
javascript
const puppeteer = require('puppeteer');
const fs = require('fs');
const cron = require('node-cron');
cron.schedule('*/5 * * * *', async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com');
const currentContent = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
const previousContentPath = 'previous-content.txt';
let previousContent = '';
if (fs.existsSync(previousContentPath)) {
previousContent = fs.readFileSync(previousContentPath, 'utf8');
}
if (currentContent !== previousContent) {
console.log('O conteúdo mudou!');
fs.writeFileSync(previousContentPath, currentContent);
await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
console.log('Captura de tela salva!');
} else {
console.log('Nenhuma alteração detectada.');
}
await browser.close();
});
Este script será executado a cada 5 minutos (*/5 * * * *) e verificará se há alterações no site. Se ele detectar uma alteração, tirará uma captura de tela e registrará a atualização.
Código bônus
Pegue seu Código Bônus para as melhores soluções de captcha em CapSolver: scrape. Após resgatá-lo, você receberá um bônus extra de 5% após cada recarga, ilimitadamente.

Conclusão
Puppeteer é uma ferramenta poderosa para coleta de dados da web e automatização de tarefas de navegador. Neste post, demonstramos como usar o Puppeteer para coleta de dados da web básica, detectar alterações no site e capturar capturas de tela dessas alterações. Com essas técnicas, você pode monitorar sites e acompanhar atualizações automaticamente. Certifique-se de verificar as políticas de coleta de dados da web para evitar violar os termos de serviço.
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

Qual é a melhor extensão para resolver CAPTCHA 2026?
No mundo em constante evolução da segurança online, os desafios CAPTCHA tornaram-se uma barreira comum para os usuários da internet...

Sora Fujimoto
12-Dec-2025

Lumiproxy: Proxy Premium para Scraping de Web e Coleta de Dados
Neste artigo, mostraremos o que é Lumiproxy e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

Genlogin: Revolutionar sua experiência de automação da web
Neste artigo, vamos mostrar para você o que é o Genlogin e os serviços que eles oferecem.

Rajinder Singh
12-Dec-2025

Proxys.io: Proxies individuais para qualquer tarefa
Neste artigo, vamos mostrar para você o que é o Proxys.io e os serviços que eles oferecem.

Rajinder Singh
12-Dec-2025

Tabproxy: Bom custo proxy residencial internacional
Neste artigo, vamos mostrar para você o que é o Tabproxy e os serviços que eles oferecem.

Ethan Collins
12-Dec-2025

O que são erros 402, 403, 404 e 429 em raspagem de web? Um Guia Completo
Domine o tratamento de erros de raspagem de web entendendo o que são os erros 402, 403, 404 e 429. Aprenda a corrigir o erro 403 Proibido, implementar soluções para o erro de limitação de taxa 429 e tratar o código de status Payment Required emergente 402.

Lucas Mitchell
12-Dec-2025

