选择元素
Cheerio 允许用户使用 CSS 选择器 从文档中选择元素。 这样就可以根据标签的名称、class 名称和属性值等标准选择元素了。 本指南概述了如何使用 CSS 选择器获取 HTML 元素。
要使用 Cheerio 选择元素,首先需要导入(import)本工具库并加载 文档。示例如下:
import * as cheerio from 'cheerio';
// 使用 “加载文档” 章节中所述的方法加载文档。
const $ = cheerio.load('<html>...</html>');
文档被加载后,就可以使用 $
函数来选择元素了。
$
函数的工作原理与 jQuery 中的 $
函数类似,
同样是允许你根据标签的名称、class 名称和属性值来
选择元素。
以下是一些如何使用$
函数选择元素的示例:
- 选择文档中的所有
<p>
元素:
const $p = $('p');
提示
Cheerio 的惯例用法是在变量名前加上 $ 字符,以表示 该变量包含一个 Cheerio 对象。虽然这样做并不是必须的,但却是一个很好 的经验。
- 选择具有特定 class 名称的元素:
const $selected = $('.selected');
- 、选择具有特定属性值的元素:
const $selected = $('[data-selected=true]');
XML 命名空间
您可以使用 XML 命名空间(Namespaces)进行选择,但
根据 CSS 规范,
冒号 (:
) 必须进行转义,这样选择器才有效。
$('[xml\\:id="main"');
- 选择器可以组合使用,以选择符合多个条件的元素。
例如,选择所有 class 名称为
selected
的<p>
元素:
const $selected = $('p.selected');
- 此外,还可以使用空格 (
<div>
元素的所有后代元素<p>
:
const $p = $('div p');
- 也可以使用
>
字符来选择某个元素的所有子代元素。 例如,选择<div>
元素的所有子代<p>
元素:
const $p = $('div > p');
请查看 Cheerio 的底层 CSS 选择器工具库
css-select 的文档,
以获取其所支持的所有选择器的列表。
例如,选择包含单词 "hello" 的所有 <p>
元素:
const $p = $('p:contains("hello")');
Cheerio 还支持几种 jQuery 特有的扩展,
允许您根据元素在文档中的位置来进行选择。例如,选择
文档中的第一个 <p>
元素:
const $p = $('p:first');
请查看 cheerio-select (实现这些扩展的工具库),以了解有哪些可用功能。
如需了解更多信息,请参阅 jQuery 的 选择元素指南 以及 MDN。
最后,如需添加对自定义 CSS 伪 class 的支持,请参阅 扩展 Cheerio 指南。