Cheerio是一个基于JQuery核心的高性能快速灵活的HTML抓取的实现方案。它使用了一个选择器类似于jQuery的硬而快的DOM实现,同时支持核心的DOM操作方式。
Cheerio使用和jQuery相同的DOM操作 API。所以,如果你已经对jQuery非常熟悉了,学习学习Cheerio的语法就会变得十分容易。
使用Cheerio可以方便地从HTML代码中提取出数据,并进行数据分析或清洗等操作。在Node.js中,可以通过NPM安装Cheerio模块。
如下是Cheerio的用法:
1.安装Cheerio模块:
npm install cheerio
2.引入Cheerio模块:
const cheerio = require('cheerio');
3.使用load函数将HTML代码传入Cheerio解析器:
const $ = cheerio.load('<html>...</html>');
4.使用Cheerio提供的DOM API进行数据抽取或处理:
const title = $('title').text();
$("a").each(function(i, elem) {
console.log($(this).attr("href"));
});
Cheerio支持的DOM操作方式有:查找元素、获取属性、修改属性、添加删除元素、获取和设置内容等。具体可以参考官方文档:https://github.com/cheeriojs/cheerio
Cheerio返回的是一个特殊的Cheerio对象,也称为选择器对象。该对象封装了一个DOM元素数组,并提供了一些对DOM元素进行操作、查找和筛选的方法,使得我们可以方便地使用jQuery风格的语法来操作HTML文档。
该对象具有以下特点:
1、可以使用链式调用,使得多个操作可以组合在一起。
2、可以直接访问单个元素的属性和方法,如.attr(), .text()等。
3、可以使用.first(), .last(), .eq()等方法获取集合中的指定元素。
4、可以使用数组下标或迭代器访问集合中的元素。
总之,Cheerio返回的对象提供了非常多的操作和查询DOM元素的方法,可以方便地处理和操作HTML文档。
$('h1, h2, h3, h4, h5, h6').each((index, item) => {
console.log($(item).attr('id'))
})
在这段代码中,item表示选择器对象中的DOM元素,但是它并不是真正的DOM元素,而是Cheerio对象,其并不具备使用原生JavaScript操作DOM对象的所有方法,例如使用item.getAttribute('id')或item.id获取元素ID都将会报错,因为Cheerio对象没有这些方法。
在这里,使用$(item)将Cheerio对象转换为jQuery对象,从而可以调用jQuery提供的.attr()方法获取元素的ID属性。