【问题标题】:How to get link using Xpath in Nodejs?如何在 Nodejs 中使用 Xpath 获取链接?
【发布时间】:2020-11-04 05:31:48
【问题描述】:

我正在尝试将链接连接到此 href

<a href="http://e epurl.com/g-em6v" title="Late Night 1 Love" target="_blank">Late Night 1 Love</a>

(我必须在 url 之间添加空格) 我能够通过以下方法获取文本内容

const [el] = await page.$x('//*[@id="archive-list"]/div/li[1]');
    const txt = await el.getProperty("textContent");
    const rawTxt = await txt.jsonValue();
  const [link] = await page.$x('//*[@id="archive-list"]/div/li[1]/a');
     const L = await string('//*[@id="archive-list"]/div/li[1]/a/@href'); 
    console.log(L);

我无法提取链接本身,我希望这会起作用,但似乎并不那么简单。

我正在使用 Puppeteer 访问页面以访问元素。

【问题讨论】:

  • console.log(L); 的输出是什么?

标签: node.js xpath puppeteer


【解决方案1】:

使用page.evaluate 获取元素的属性是最简单的方法。它看起来像这样:page.evaluate(pageFunction[, ...args])pageFunction 在页面上下文中进行评估,ElementHandle 实例可以作为参数传递。由于 XPath 句柄返回一个数组(长度为1),您可以使用[0] 索引上的第一个元素。

例如:

const link = await page.evaluate(el => el.href, (await page.$x('//*[@id="archive-list"]/div/li[1]/a'))[0])
console.log(link)

【讨论】:

  • 谢谢!抱歉回复晚了,我最终使用了cheerio,并且能够更轻松地访问元素哈哈。我刚刚尝试了您的代码,它确实有效!我会用我必须看到的那个更有效的来测试它!
猜你喜欢
  • 2016-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 2016-03-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多