javascript 如何在puppeteer中只获取节点文本,而不获取子节点文本

ac1kyiln  于 2023-03-16  发布在  Java
关注(0)|答案(1)|浏览(168)

假设网站布局如下所示:

<div id="monday">
  ...
  <div class="dish">
    Potato Soup
    <br>
    <span>With smoked tofu</span>
  </div>
</div>

使用puppeteer,我如何能够只获取text节点的内容,而不是.dish中的所有内容?
我试过了

let selector = await page.waitForSelector("#monday .dish");
let text = await selector.evaluate(el => el.textContent) ?? "";

但这会返回"Potato SoupWith smoked tofu"

idfiyjo8

idfiyjo81#

textContent就是这样的。你可以选择第一个TEXTNODE,如下所示:

let text = await selector.evaluate(el => Array.from(el.childNodes)
                               .find(node=> node.nodeType === 3)?.textContent)

nodeType === 3表示它是一个文本节点。或者您可以使用nodeName === '#text'
x一个一个一个一个x一个一个二个x

相关问题