Estoy tratando de raspar el enlace a la página siguiente de esta página web . Sé cómo raspar eso usando el selector css. Sin embargo, las cosas salen mal cuando intento analizar lo mismo usando xpath. Esto es lo que obtengo en lugar del enlace de la página siguiente.
const puppeteer = require("puppeteer"); let url = "https://stackoverflow.com/questions/tagged/web-scraping"; (async () => { const browser = await puppeteer.launch({headless:false}); const [page] = await browser.pages(); await page.goto(url,{waitUntil: 'networkidle2'}); let nextPageLink = await page.$x("//a[@rel='next']", item => item.getAttribute("href")); // let nextPageLink = await page.$eval("a[rel='next']", elm => elm.href); console.log("next page:",nextPageLink); await browser.close(); })();¿Cómo puedo raspar el enlace a la página siguiente usando xpath?
page.$x(expression) devuelve una matriz de identificadores de elementos. Necesita desestructurar o acceder al índice para obtener el primer elemento de la matriz. const [nextPageLink] = await page.$x("//a[@rel='next']"); const nextPageURL = await nextPageLink.evaluate(link => link.href);O:
const [nextPageLink] = await page.$x("//a[@rel='next']"); const nextPageURL = await (await nextPageURL.getProperty('href')).jsonValue();