CheerioJS获得特定的<li>,其中标题文本为“我想要什么”

问题描述

我正在尝试获取标题为“我想要的东西”的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>

代码显然使我能够看到页面中的每个li元素,有什么办法我只能在“我想要的”面板标题下获得lis?

解决方法

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

,

您可以使用:

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