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 选择器的解释:
div.mw-parser-output
div
确保元素是那个。点表示选择器是 class
.
>
指向立即数child
ul
简单 ul
标签
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();
我正在尝试通过网络抓取 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 选择器的解释:
div.mw-parser-output
div
确保元素是那个。点表示选择器是class
.>
指向立即数childul
简单ul
标签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();