在puppeteer中使用xpath抓取下一页链接失败



我正在尝试从这个网页抓取到下一页的链接。我知道如何使用css选择器来抓取。但是,当我尝试使用xpath解析相同的内容时,就会出现问题。这是我得到的,而不是下一页链接。

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();
})();

如何使用xpath抓取到下一页的链接?

  1. page.$x(expression)返回元素句柄数组。要从数组中获取第一个元素,您需要解构或访问索引。
  2. 要从这个元素句柄获取DOM元素属性,你需要使用元素句柄参数或元素句柄API进行求值。
const [nextPageLink] = await page.$x("//a[@rel='next']");
const nextPageURL = await nextPageLink.evaluate(link => link.href);

或:

const [nextPageLink] = await page.$x("//a[@rel='next']");
const nextPageURL = await (await nextPageURL.getProperty('href')).jsonValue();

最新更新