Estoy tratando de configurar las identificaciones para todas las etiquetas <img>
de una página, mi bucle ejecuta sus iteraciones por completo, pero algunas de las etiquetas <img>
no obtienen las identificaciones, como se puede ver en la siguiente imagen:
Aquí está mi código:
const browser = await puppeteer.launch({ args: [ '--no-sandbox', ], }); const page = await browser.newPage(); await page.setViewport({ width: 1440, height: 10000 }) await page.goto(url, { waitUntil: 'networkidle2', timeout: 0, }); await page.evaluate(() => { const images = document.getElementsByTagName('img') || [] for (let i = 0; i < images.length; i++) { document.getElementsByTagName('img')[i].id = `${i}` document.getElementsByTagName('img')[i].src = document.getElementsByTagName('img')[i].getAttribute('src')?.startsWith('https') ? document.getElementsByTagName('img')[i].getAttribute('src')! : `https://leza.notion.site${document.getElementsByTagName('img')[i].getAttribute('src')}` } })
¿Me estoy perdiendo algo? ¡Cualquier ayuda sería muy apreciada!
Sigo recibiendo este registro de advertencia
PAGE LOG: %c NOTION%c WARNING %c background: black; color: white; background: black; color: orange font-weight: normal Reverting mutation of attribute src from "/image/https%3A%2F%2Fraw.githubusercontent.com%2Feirikmadland%2Fnotion-icons%2Fmaster%2Fv5%2Ficon3%2Ful-file-search-alt.svg?table=block&id=db9359ba-4fcd-4a24-9744-8514d7810939&userId=&cache=v2" -> "https://leza.notion.site/image/https%3A%2F%2Fraw.githubusercontent.com%2Feirikmadland%2Fnotion-icons%2Fmaster%2Fv5%2Ficon3%2Ful-file-search-alt.svg?table=block&id=db9359ba-4fcd-4a24-9744-8514d7810939&userId=&cache=v2" in component JSHandle@object
En vez de
await page.evaluate(() => { const images = document.getElementsByTagName('img') || []
intenta usar:
await page.$eval('.img', (images) => { /* DO STUFF... */ });
Así que el siguiente código debería funcionar:
await page.$eval('.img', (images) => { for (let i = 0; i < images.length; i++) { const currentImage = images[i]; const targetImageId = `${i}`; const currentImageSrc = currentImage.getAttribute('src'); const targetImageSrc = currentImageSrc?.startsWith('https') ? currentImageSrc! : `https://leza.notion.site${currentImageSrc}`; currentImage.setAttribute("id", targetImageId); currentImage.setAttribute("src", targetImageSrc); } });
Tenga en cuenta que su URL se parecerá a lo siguiente, que probablemente no sean las URL correctas para las dos primeras:
<img src="http://www.gravatar.com/avatar/8947787d4067fa6e66e485bfc72233e4?s=48&d=identicon&r=PG&f=1">
https://leza.notion.sitehttp://www.gravatar.com/avatar/8947787d4067fa6e66e485bfc72233e4?s=48&d=identicon&r=PG&f=1
o
<img src="image.png">
https://leza.notion.sitemyimage.png
o
<img src="/image.png">
https://leza.notion.sitemy/image.png