
Anh Tuan
Data Science Expert

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.
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.
Antes de comenzar, asegúrese de tener instalado lo siguiente:
Puede instalar Puppeteer ejecutando el siguiente comando en su terminal:
npm install puppeteer
Para comenzar, creemos un raspador web básico que navegue a un sitio web y extraiga el contenido de texto.
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.
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:
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.
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:
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:
<h1>.previous-content.txt).previous-content.txt para futuras comparaciones.Puede usar Node.js para programar este script para que se ejecute a intervalos usando el paquete node-cron.
Primero, instala node-cron:
npm install node-cron
Ahora, modifique su script para que se ejecute a un intervalo establecido (por ejemplo, cada 5 minutos):
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.
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.

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.
Guía de captcha para flujos de trabajo de datos aprobados: aprende tipos de desafíos, manejo de API, consistencia de proxy, reintentos y uso responsable.

API rápida para resolver CAPTCHA para automatización: comparar flujos de trabajo de tokens, desafíos soportados, verificaciones de latencia e integración de CapSolver responsable.
