它的 struct 如下:

<div class="masterselector">
   <div class="selector_what_me_need selector01 selector02">not need value</div>
   <div class="selector_what_me_need">need value</div>
</div>

如何才能只 Select 第selector_what_me_need类的div个元素中的第二个文本"Need Value"?

UPD. 解决方案(我有很多这个区块):

await page.$$eval('.masterselector .selector_what_me_need:not(.selector01):not(.selector02) div', el => el.map(e => e.textContent));

推荐答案

有许多方法可以 Select 它,以下是一些方法:

.selector_what_me_need:not(.selector01)
div:not(.selector01):not(.masterselector)
div[class$=need]

代码:

const puppeteer = require("puppeteer");

const html = `
    <div class="masterselector">
    <div class="selector_what_me_need selector01 selector02">not need value</div>
    <div class="selector_what_me_need">need value</div>
    </div>
`;


let browser;
(async () => {
    browser = await puppeteer.launch({headless: false});
    // const page = await browser.newPage();
    const [page] = await browser.pages();
    await page.setContent(html);

    //let selector = ".selector_what_me_need:not(.selector01)";
    //let selector = "div:not(.selector01):not(.masterselector)";
    let selector = "div[class$=need]";  // means ends with
    let text = await page.$eval(selector, el => el.textContent);     
    console.log(text);

    await browser.close();

})().catch(err => console.error(err));

Node.js相关问答推荐

Azure虚拟机上的JS Express:可疑请求?

Express 4.18正文解析

如何在RavenDB中执行JS索引?

关于Node.js中的AES加密库的问题

通过 Node js 中的 TBA 执行 netsuite REST upsert 操作出现 401 错误

是否可以在 NodeJS 代码库中的每个函数之前和之后添加 console.log?

$not 的聚合版本是什么?

express app.post的多个参数在Node.js中的定义是什么

如何使用 node.js 将两个或多个 API 请求组合成一个端点并表达

错误:找不到模块'C:\Users\nguye\AppData\Local\nodejs\node_modules\npm\bin\npm-cli.js'

如何为一个网站实现这 2 个网址.即 www.administrator.sitename.com 和 www.sitename.com?

如何在 Nest.js 中使用查询参数?

如何在 Node.js 中逐字节读取二进制文件

调用 require 时的 const vs let

NodeJS为exec设置环境变量

Node.js 服务器中没有缓存

如何判断MongoDB本机nodejs驱动程序中是否存在集合?

Node.js 中的 PHP exit()/die() 类似功能是什么

避免在弹性 beantalk 中重建 node_modules

AWS Lambda:如何将秘密存储到外部 API?