【问题标题】:How to get exact textContent of XPATH using Puppeteer.js如何使用 Puppeteer.js 获取 XPATH 的确切文本内容
【发布时间】:2021-03-24 05:19:31
【问题描述】:

node.js / javascript 使用 puppeteer.js

我正在尝试使用 puppeteer 获取 xpath 的确切文本,但它只是将内容作为一个字符串返回。这里是 xpath 的 HTML 内容示例:

<div class="footNote" style="display: block;">
<br>
<strong>Note 17</strong>
<br>
34 people attended this event.
</div>

我用来抓取 xpath 文本的代码:

var xPath = `//*[@id="contentWrapper"]/div[${xNum}]/div[${yNum}]/div`
[qr] = await page.$x(xPath);
txt = await qr.getProperty('textContent');
const textContent = await txt.jsonValue();
console.log(textContent)

问题是,textContent 返回的字符串是“注意 1734 人参加了这个活动。”

我需要能够分别获得这两个字符串,而不是作为一个字符串混合在一起。任何帮助将不胜感激。

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    如果您需要可读的文本,请尝试使用qr.getProperty('innerText'); 而不是qr.getProperty('textContent');

    HTMLElement.innerText

    【讨论】:

    • 将“textContent”更改为“innerText”后,我仍然得到相同的输出..
    • 可以提供网址吗?您问题中的示例无法生成“注意 1734 人参加了此活动”。字符串(它有文字换行符),所以很难指出可能是什么错误。
    • 我通过使用 innerHTML 然后使用正则表达式删除 HTML 标记来解决此问题。使用 innerText 和 textContent 给了我相同的确切结果。
    • 它们可能相同的可能性很小:当元素存在于 DOM 中但未呈现(例如通过 CSS 隐藏)时,innerText 会回退到 textContent。也许这就是你的情况。对不起。
    【解决方案2】:

    我通过使用 innerHTML 并使用正则表达式来删除 HTML 标记来解决此问题。我使用 innerText 和 textContent 得到了相同的结果

    【讨论】:

      【解决方案3】:

      通过使用解决

      qr.getProperty('innerHTML')
      

      然后使用 RegEx 去除 HTML 标签。

      【讨论】:

        猜你喜欢
        • 2015-11-06
        • 2013-01-15
        • 2013-11-14
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 2017-05-24
        • 2011-05-24
        • 2018-05-12
        相关资源
        最近更新 更多