Web Scraping con Puppeteer: Detección de cambios en el sitio web y captura de pantallas

Anh Tuan
Data Science Expert
07-Oct-2024

El raspado web se ha convertido en una herramienta esencial para automatizar la recopilación de datos y monitorear los sitios web en busca de cambios. En esta publicación de blog, exploraremos cómo usar Puppeteer, una biblioteca de Node.js, para el raspado web, detectar cambios en un sitio web y tomar capturas de pantalla de estos cambios.
¿Qué es Puppeteer?
Puppeteer es una biblioteca de Node.js que proporciona una API de alto nivel para controlar Chrome o Chromium sin cabeza a través del protocolo DevTools. Se puede utilizar para raspar la web, pruebas automatizadas o incluso generar capturas de pantalla y archivos PDF de páginas web.
Prerrequisitos
Antes de comenzar, asegúrese de tener instalado lo siguiente:
Puede instalar Puppeteer ejecutando el siguiente comando en su terminal:
bash
npm install puppeteer
Raspado web básico con Puppeteer
Para comenzar, creemos un raspador web básico que navegue a un sitio web y extraiga el contenido de texto.
javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navegar al sitio web
await page.goto('https://example.com');
// Extraer el contenido de texto
const content = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
console.log('Contenido de la página:', content);
await browser.close();
})();
Este script abre un navegador sin cabeza, navega a example.com y extrae el texto del elemento <h1>. Puede reemplazar la URL con el sitio web que desea raspar y ajustar el selector para que coincida con el elemento que le interesa.
Tomar capturas de pantalla con Puppeteer
Puppeteer le permite tomar capturas de pantalla de páginas web fácilmente. Puede capturar capturas de pantalla de página completa o áreas específicas de la página.
Aquí se muestra cómo tomar una captura de pantalla de página completa:
javascript
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navegar al sitio web
await page.goto('https://example.com');
// Tomar una captura de pantalla de página completa
await page.screenshot({ path: 'screenshot.png', fullPage: true });
await browser.close();
})();
Este script guarda una captura de pantalla de toda la página como screenshot.png. Puede modificar la ruta para especificar un nombre de archivo o ubicación diferente.
Detectar cambios en el sitio web
Monitorear un sitio web en busca de cambios es una característica útil en el raspado web. Puede lograr esto revisando repetidamente el contenido del sitio web y comparándolo con una versión guardada previamente.
Aquí hay un ejemplo de detección de cambios de texto y tomar una captura de pantalla si el contenido cambia:
javascript
const puppeteer = require('puppeteer');
const fs = require('fs');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
// Navegar al sitio web
await page.goto('https://example.com');
// Extraer el contenido de texto
const currentContent = await page.evaluate(() => {
return document.querySelector('h1').innerText;
});
const previousContentPath = 'previous-content.txt';
let previousContent = '';
// Verificar si existe el contenido anterior
if (fs.existsSync(previousContentPath)) {
previousContent = fs.readFileSync(previousContentPath, 'utf8');
}
// Comparar el contenido actual con el contenido anterior
if (currentContent !== previousContent) {
console.log('¡El contenido ha cambiado!');
// Guardar el nuevo contenido
fs.writeFileSync(previousContentPath, currentContent);
// Tomar una captura de pantalla del cambio
await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
console.log('¡Captura de pantalla guardada!');
} else {
console.log('No se detectaron cambios.');
}
await browser.close();
})();
En este ejemplo:
- El script extrae el contenido del elemento
<h1>. - Compara el contenido actual con una versión guardada previamente (
previous-content.txt). - Si se detecta un cambio, toma una captura de pantalla y la guarda con una marca de tiempo en el nombre del archivo, asegurando que cada captura de pantalla sea única.
- El nuevo contenido se guarda en
previous-content.txtpara futuras comparaciones.
Programar el raspador para que se ejecute periódicamente
Puede usar Node.js para programar este script para que se ejecute a intervalos usando el paquete node-cron.
Primero, instala node-cron:
bash
npm install node-cron
Ahora, modifique su script para que se ejecute a un intervalo establecido (por ejemplo, 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('¡El contenido ha cambiado!');
fs.writeFileSync(previousContentPath, currentContent);
await page.screenshot({ path: `screenshot-${Date.now()}.png`, fullPage: true });
console.log('¡Captura de pantalla guardada!');
} else {
console.log('No se detectaron cambios.');
}
await browser.close();
});
Este script se ejecutará cada 5 minutos (*/5 * * * *) y verificará si hay cambios en el sitio web. Si detecta un cambio, tomará una captura de pantalla y registrará la actualización.
Código de bonificación
Reclame su Código de bonificación para las mejores soluciones de captcha en CapSolver: scrape. Después de canjearlo, obtendrá un bono adicional del 5% después de cada recarga, ilimitadas veces.

Conclusión
Puppeteer es una herramienta poderosa para el raspado web y la automatización de tareas del navegador. En esta publicación, demostramos cómo usar Puppeteer para raspado web básico, detección de cambios en el sitio web y captura de capturas de pantalla de estos cambios. Con estas técnicas, puede monitorear sitios web y realizar un seguimiento de las actualizaciones automáticamente. Asegúrese de consultar las políticas de raspado web para evitar violar los términos de servicio.
Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.
Máse

¿Qué es la mejor extensión para resolver CAPTCHA 2026?
En el mundo en constante evolución de la seguridad en línea, los desafíos CAPTCHA se han convertido en un obstáculo común para los usuarios de internet...

Lucas Mitchell
12-Dec-2025

Lumiproxy: Proxy Premium para Raspado de Web y Recolección de Datos
En este artículo, mostraremos qué es Lumiproxy y los servicios que ofrecen.

Ethan Collins
12-Dec-2025

Genlogin: Revoluciona tu experiencia de automatización web
En este artículo, te mostraremos qué es Genlogin y los servicios que ofrecen.

Rajinder Singh
12-Dec-2025

Proxys.io: Proxys individuales para cualquier tarea
En este artículo, te mostraremos qué es Proxys.io y los servicios que ofrecen.

Nikolai Smirnov
12-Dec-2025

Tabproxy: Buen valor de proxy residencial en el extranjero
En este artículo, te mostraremos qué es Tabproxy y los servicios que ofrecen.

Lucas Mitchell
12-Dec-2025

Proxys Residenciales IP2World: Soluciones Líderes Globales de Proxy IP
En este artículo, les mostraremos qué es IP2World y los servicios que ofrecen.

Ethan Collins
12-Dec-2025

