📅  最后修改于: 2023-12-03 15:14:08.254000             🧑  作者: Mango
Cheerio 是一个基于 JQuery 核心实现的快速、灵活、与 HTML/XML DOM 交互的工具,适合在 Node.js 环境下爬取、处理数据。本文将对 Cheerio 的使用进行介绍。
在 Node.js 中使用 Cheerio 首先需要安装它,使用以下命令进行安装:
npm install cheerio
加载一个外部 HTML/XML 文档可以使用 cheerio.load()
方法,该方法可以接收一个字符串类型的 HTML/XML,也可以是一个 buffer,例如:
const cheerio = require('cheerio');
const html = '<html><body><h1>Hello World!</h1></body></html>';
const $ = cheerio.load(html);
这样就可以使用 $
对象来操作 HTML/XML 文件了。
Cheerio 支持 JQuery 的大部分选择器,包括:
#id
.class
tag
[attribute]
, [attribute=value]
selector1, selector2
selector1 selector2
selector1 > selector2
selector1 ~ selector2
例如:
const cheerio = require('cheerio');
const html = '<html><body><h1>Hello World!</h1><ul><li>Item 1</li><li>Item 2</li></ul></body></html>';
const $ = cheerio.load(html);
// 获取 h1 元素的文本内容
const h1Text = $('h1').text();
console.log(h1Text); // Hello World!
// 获取 ul 下的所有 li 元素文本内容
const liTexts = $('ul li').map((i, el) => $(el).text()).get();
console.log(liTexts); // ['Item 1', 'Item 2']
Cheerio 同样支持 JQuery 的属性操作方法,包括:
.attr(name)
.attr(name, value)
.removeAttr(name)
例如:
const cheerio = require('cheerio');
const html = '<html><body><a href="http://example.com">Example</a></body></html>';
const $ = cheerio.load(html);
// 获取 a 元素的 href 属性值
const href = $('a').attr('href');
console.log(href); // http://example.com
// 设置 a 元素的 href 属性值
$('a').attr('href', 'http://example.org');
// 移除 a 元素的 href 属性
$('a').removeAttr('href');
Cheerio 提供了一些 DOM 操作方法,包括:
.html()
.html(htmlString)
.text()
.text(textString)
.prepend(content[, content])
.append(content[, content])
.before(content[, content])
.after(content[, content])
.remove()
.empty()
例如:
const cheerio = require('cheerio');
const html = '<ul><li>Item 1</li><li>Item 2</li></ul>';
const $ = cheerio.load(html);
// 获取 ul 元素的 HTML 内容
const ulHtml = $('ul').html();
console.log(ulHtml); // <li>Item 1</li><li>Item 2</li>
// 修改 ul 元素的 HTML 内容
$('ul').html('<li>New Item</li>');
// 获取 ul 元素的文本内容
const ulText = $('ul').text();
console.log(ulText); // Item 1Item 2New Item
// 修改 ul 元素的文本内容
$('ul').text('New Content');
// 在 ul 元素前插入新元素
$('ul').before('<h1>Hello World!</h1>');
// 在 ul 元素内部最前面插入新元素
$('ul').prepend('<li>Item 0</li>');
// 在 ul 元素内部最后面插入新元素
$('ul').append('<li>Item 3</li>');
// 在 ul 元素后面插入新元素
$('ul').after('<p>The End</p>');
// 移除 ul 元素
$('ul').remove();
// 清空 ul 元素
$('ul').empty();
Cheerio 是一个强大的 HTML/XML 处理工具,能够使 Node.js 爬虫的开发更加灵活。本文介绍了 Cheerio 的安装、加载、选择器、属性操作、DOM 操作等相关内容,如果有更多的需要,还可以查阅官方文档。