Tengo un script de nodo/titiritero que visita una página, encuentra un div específico con una clase y toma una captura de pantalla del div. Sin embargo, hay elementos/nodos en la página que me gustaría eliminar antes de capturar la captura de pantalla, ya que interfieren con la imagen, pero parece que no puedo encontrar la documentación sobre cómo hacerlo.
Esto es lo que tengo hasta ahora, pero no puedo averiguar cuándo o cómo eliminar un div determinado con una clase específica .ce45 , por ejemplo:
await page.setViewport({ width: 1368, height: 768 }); await page.waitForSelector(`.${url.id.toLowerCase()}`).then(() => console.log('scraped', url.id.toLowerCase())); const component = await page.$(`.${url.id.toLowerCase()}`); const bounding_box = await component.boundingBox(); await component.screenshot({ path: `./${url.id.toLowerCase()}.png`, clip: { x: bounding_box.x, y: bounding_box.y, width: Math.min(bounding_box.width, page.viewport().width), height: Math.min(bounding_box.height, page.viewport().height), } });Yo he tratado:
await page.evaluate((sel) => { let div_selector_to_remove = ['.ce45', '.d20', '.cc27']; for(sel of div_selector_to_remove){ document.querySelector(`${sel}`).remove(); } }); pero aparece el error Cannot read properties of null (reading 'remove')
La forma en que lo tiene solo eliminará el primero para cada selector (y arrojará un error cuando no esté allí).
Probar:
page.$$eval('.ce45,.d20,.cc27', els => els.map(el => el.remove()))