así que estoy trabajando con titiritero para automatizar las cosas y funciona bien, pero cuando cargo el sitio web, toma un poco más de tiempo para cargar que mi sitio web normal, intenté hacer caché usando esto
const puppeteer = require('puppeteer'); let time = new Date() async function test() { const browser = await puppeteer.launch({ headless: true, executablePath:"D:\\Desktop\\node_modules\\puppeteer\\.local-chromium\\win64-848005\\chrome-win\\chrome.exe", args: ['--no-sandbox'], }); const page = await browser.newPage(); const response = await page.goto('https://example.com/'); console.log(`${new Date() -time }`) console.log(response); await browser.close(); }y funcionó para el ejemplo.com, el caché se almacenó y se volvió más rápido para cargar, pero mi sitio web objetivo parece no permitir el almacenamiento en caché
¿Alguna otra forma de acelerar el proceso?
Si solo desea que el sitio se cargue más rápido al raspar y no confía en algunas de las imágenes o javascript, tiene la posibilidad de bloquear estos recursos.
Bloqueo por tipo de recurso
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch(); const page = await browser.newPage(); await page.setRequestInterception(true); page.on('request', (req) => { if (req.resourceType() === 'image') { req.abort(); } else { req.continue(); } }); await page.goto('https://bbc.com'); await page.screenshot({path: 'no-images.png', fullPage: true}); await browser.close(); })();Bloqueo por Dominio
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ headless: true, }); const page = await browser.newPage(); const options = { waitUntil: 'networkidle2', timeout: 30000, }; // Before: Normal navigtation await page.goto('https://theverge.com', options); await page.screenshot({path: 'before.png', fullPage: true}); const metrics = await page.metrics(); console.info(metrics); // After: Navigation with some domains blocked // Array of third-party domains to block const blockedDomains = [ 'https://pagead2.googlesyndication.com', 'https://creativecdn.com', 'https://www.googletagmanager.com', 'https://cdn.krxd.net', 'https://adservice.google.com', 'https://cdn.concert.io', 'https://z.moatads.com', 'https://cdn.permutive.com']; await page.setRequestInterception(true); page.on('request', (request) => { const url = request.url(); if (blockedDomains.some((d) => url.startsWith(d))) { request.abort(); } else { request.continue(); } }); await page.goto('https://theverge.com', options); await page.screenshot({path: 'after.png', fullPage: true}); const metricsAfter = await page.metrics(); console.info(metricsAfter); await browser.close(); })();