Cheerio:轻松优雅地找到具有多个特定条件的标签?

Cheerio: find tag with multiple specific criteria easily and elegantly?

我正在尝试通过网络抓取 https://liquipedia.net/dota2/Admiral 此页面,以获取 <ul> 标签内的所有 <li> 标签,这些标签再次位于 div 内 class mw-parser-output 即有 title 属性。 (我认为这就是他们在 HTML 世界中的称呼?比如 <tag property="...">)。

使用 Cheerio 执行此操作的最优雅、最简单的方法是什么?我知道我可以用一些 for 循环和其他东西来做到这一点,但如果有一种简单的方法来做到这一点,我的代码会更清晰。

我很高兴 Cheerio 像 jQuery。像这样的简单选择器应该这样做:

const li = $('div.mw-parser-output > ul > li[title]').toArray(); // Optionaly turn selected items into an array

CSS 选择器的解释:

  1. div.mw-parser-output div 确保元素是那个。点表示选择器是 class.
  2. >指向立即数child
  3. ul 简单 ul 标签
  4. li[title]任意li标签,但需要有title属性。

然后我们把结果变成一个数组,这样它就可以使用了。
就这么简单。

您还可以获得每个 li 元素的文本数组,其中包含以下内容:

const arrayOfLiTexts = li.map($el => $el.text());

https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors

const elements = $('div[title].mw-parser-output ul li').toArray();