Node.js CheerioJS变得具体<;李>;其中标题文本';我想要什么';

Node.js CheerioJS变得具体<;李>;其中标题文本';我想要什么';,node.js,cheerio,scrape,Node.js,Cheerio,Scrape,我正在尝试获取标题为“我想要什么”的li元素 这是我的代码: let wants = [] $$('li').each((wantIdx, wantElement) => { const want= $(relatedArticleElement).text() wants.push(want) }) 这就是我试图解析的HTML: <div

我正在尝试获取标题为“我想要什么”的li元素

这是我的代码:

let wants = []
                $$('li').each((wantIdx, wantElement) => {
                    const want= $(relatedArticleElement).text()
                    wants.push(want)
                })
这就是我试图解析的HTML:

<div class="side-list-panel">
    <h4 class="panel-header">What I Want</h4>
    <ul class="panel-items-list">
        <li>
            1
        </li>
        <li>
            2
        </li>
        <li>
            3
        </li>
        <li>
                4
        </li>
        <li>
            5
        </li>
    </ul>
</div>
<div class="side-list-panel">
    <h4 class="panel-header">What I don't want</h4>
    <ul class="panel-items-list">
        <li>
            a
        </li>
        <li>
            b
        </li>
        <li>
            c
        </li>
        <li>
            d
        </li>
        <li>
            e
        </li>
    </ul>
</div>

我想要什么
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
我不想要什么
  • A.
  • B
  • C
  • D
  • E

这段代码为我获取了页面中的每个li元素。显然,有没有办法只获取“我想要什么”面板标题下的lis?

如果Cheerio支持,您可以尝试JQuery的contains示例$('td:contains(“male”))

您可以通过以下方式获取这些元素:

$('h4:contains("What I Want") + ul li').get().map(li => $(li).text())

你没有任何类来区分一个面板标题和另一个面板标题吗?没有,我没有。我唯一的标识符是面板标题中的文本。如果Cheerio支持,你可以试试JQuery的
contains
$('td:contains(“male”))
如果你在其中包括你迄今为止尝试过的内容以及你做过的研究,它将帮助我们回答你的问题。@DylanLandry我用.eq()对它进行了硬编码,效果很好。。但我只是想知道还有别的方法吗?