¿Qué hace puppeteer-automation?
Guía experta para la automatización del navegador con Puppeteer, incluyendo mejores prácticas para extracción de datos web, pruebas, captura de pantallas y ejecución de JavaScript en Chrome sin interfaz gráfica.
Instalación
Para usar Puppeteer, instala la biblioteca desde npm:
npm install puppeteer
O si prefieres usar Puppeteer con Chromium empaquetado:
npm install puppeteer-core
Configuración básica
Importa y lanza un navegador:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
await page.goto('https://ejemplo.com');
// ... operaciones
await browser.close();
})();
Principales funcionalidades
Navegación y espera de elementos
- Usa
page.waitForSelector()para esperar a que un elemento esté presente. - Evita tiempos de espera fijos; prefiere selectores dinámicos.
- Configura
timeouten opciones de navegación.
Captura de pantallas
await page.screenshot({ path: 'captura.png', fullPage: true });
Extracción de datos
const titulo = await page.title();
const texto = await page.$eval('h1', el => el.textContent);
Ejecutar JavaScript en la página
const resultado = await page.evaluate(() => {
return document.querySelectorAll('a').length;
});
Mejores prácticas
- Utiliza
puppeteer-extraypuppeteer-extra-plugin-stealthpara evitar detección. - Maneja errores con try/catch y cierra el navegador en finally.
- Configura
headless: 'new'para usar el nuevo modo headless de Chrome. - Limita la cantidad de navegadores abiertos simultáneamente para ahorrar recursos.
Variables de entorno útiles
PUPPETEER_EXECUTABLE_PATH: Ruta al binario de Chromium.PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: Evita descargar Chromium durante la instalación.
Enlaces de referencia
Notas sobre seguridad
- No abras páginas no confiables sin restricciones.
- Usa
page.setRequestInterception()para bloquear solicitudes innecesarias. - En entornos de pruebas, prefiere contenedores aislados.