Skip to content

html 解析库:Cheerio.js 简介

Posted on:2024年7月18日 at 12:25

Cheerio.js 是一个快速、灵活且优雅的库,用于解析和操作 HTML 和 XML。它借鉴了 jQuery 的核心语法,让我们在服务器端进行类似 jQuery 的操作。Cheerio 主要用于 web 抓取和解析 HTML 内容。

特性

安装

要使用 Cheerio.js,可以通过 npm 安装:

npm install cheerio

基本使用

加载 HTML

与 jQuery 不同,Cheerio 需要明确地加载 HTML 文档。

const cheerio = require('cheerio');
const $ = cheerio.load('<h2 class="title">Hello world</h2>');

$('h2.title').text('Hello there!');
$('h2').addClass('welcome');

console.log($.html());
// 输出: <html><head></head><body><h2 class="title welcome">Hello there!</h2></body></html>

选择器

加载 HTML 后,可以使用 jQuery 风格的选择器来查找文档中的元素。

const cheerio = require('cheerio');
const $ = cheerio.load('<ul id="fruits"><li class="apple">Apple</li><li class="orange">Orange</li><li class="pear">Pear</li></ul>');

console.log($('.apple').text()); // 输出: Apple
console.log($('ul .pear').attr('class')); // 输出: pear
console.log($('li[class=orange]').html()); // 输出: Orange

渲染

当需要渲染文档时,可以调用 html 方法:

console.log($.root().html());
// 输出: 
// <html>
//   <head></head>
//   <body>
//     <ul id="fruits">
//       <li class="apple">Apple</li>
//       <li class="orange">Orange</li>
//       <li class="pear">Pear</li>
//     </ul>
//   </body>
// </html>

要渲染某个选择的外部 HTML,可以使用 outerHTML 属性:

console.log($('.pear').prop('outerHTML'));
// 输出: <li class="pear">Pear</li>

获取文本内容

可以使用 text 方法获取 Cheerio 对象的文本内容:

const $ = cheerio.load('This is <em>content</em>.');
console.log($('body').text()); // 输出: This is content

结论

Cheerio.js 是一个强大且易用的工具,非常适合用于服务器端的 HTML 解析和操作。它简洁的 API 和高效的性能使其在 web 抓取领域非常流行。通过本文,你应该已经对 Cheerio.js 有了基本的了解,并掌握了如何在项目中使用它进行 HTML 操作。

希望本文对你有所帮助,如果你对 Cheerio.js 感兴趣,不妨尝试一下吧!