跳到主要内容

选择元素

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 指南