Cheerio 1.0 版本已正式发布了,主打功能全面 🔋
Cheerio 1.0 版本已正式发布了!在 1.0 初次候选版本(release candidate)发布之后, 历经 7 年、12 次迭代,最终迎来了 Cheerio 1.0 正式版的发布。 这个版本的主题是 "功能全面(batteries included)",现在 开箱即支持常见的使用情况。
那么,接下来就开始阅读下面的内容,了解有哪些新功能、有哪些变化,以及 如何升级吧!
新网站和文档
自上个版本发布以来,我们上线了 Cheerio 的新网站和文档。 新网站提供了详细的使用指南和 API 文档,让您全面掌握 Cheerio。 传送门 cheerio.js.org 。
加载文档的新方法
Cheerio 加载文档的方式已进行了改进。Cheerio 现在支持多种加载方法, 每种方法用以应对不同的使用情况:
load
: 解析 HTML 或 XML 字符串的经典方法。loadBuffer
: 可处理二进制数据,自动检测文档的 编码。stringStream
和decodeStream
: 直接从流(streams)中解析 HTML。fromURL
: 从 URL 抓取并解析 HTML,一站式搞定。
深入了解这些方法请参考 加载文档 教程。
简化数 据的提取
新的 extract
方法能您从 HTML 文档中提取数据
并将其存储到对象中。例如,从 GitHub 获取 Cheerio 的最新版本,
然后从版本列表页面提取发布日期和发布说明,
现在就可以更简单的实现了,代码如下:
import * as cheerio from 'cheerio';
const $ = await cheerio.fromURL(
'https://github.com/cheeriojs/cheerio/releases',
);
const data = $.extract({
releases: [
{
// 首先,我们选取包含每个版本(release)的独立区块。
selector: 'section',
// 然后,从每个区块中提取版本的 date、name 和 notes。
value: {
// 此处的每个选择器都在所选择元素的上下文中执行。
name: 'h2',
date: {
selector: 'relative-time',
// 实际的版本发布日期(即 date)存储在 `datetime` 属性中。
value: 'datetime',
},
notes: {
selector: '.markdown-body',
// 我们需要提取的是所选取元素的 HTML 内容。
value: 'innerHTML',
},
},
},
],
});
有关该方法的所有可用参数的详细信息,请参阅 提取数据 指南。
重大改变和升级指南
Cheerio 1.0 引入了几项重大改变,其中最显著的是:
-
支持 NodeJS 18.17 或更高版本。
-
简化了导入(Import)路径。例如
cheerio/slim
替代了cheerio/lib/slim
。 -
默认的 Cheerio 实例和一些静态方法(以前已被标记为不推荐)已被删除。
以前,可以写出这样的代码:
import cheerio, { html } from 'cheerio';
html(cheerio('<test></test>')); // ~ '<test></test>' -- NO LONGER WORKS现在务必首先加载文档:
import * as cheerio from 'cheerio';
cheerio.load('<test></test>').html(); -
htmlparser2 的参数现在只位于
xml
配置项下:const $ = cheerio.load('<html>', {
xml: {
withStartIndices: true,
},
}); -
以前由 Cheerio 二次导出(re-exported)的节点(Node)类型现在必须直接 从
domhandler
导入(import)。
有关的完整变更列表,请查阅 更新日志。
升级到 Cheerio 1.0
要升级到 Cheerio 1.0,只需运行一下命令:
npm install cheerio@latest
参与进来
探索新功能,告诉我们您的想法!如果遇到问题了? 请在在我们的 GitHub issue tracker 上报告。有 改进意见?欢迎提交 PR(Pull requests) :)
致谢
感谢 @jugglinmike 启动 Cheerio 1.0 的开发,并感谢所有帮助我们完成此版本的贡献者们。 没有你们,我们不可能成功。
感谢我们的 赞助商和支持者们 支持 Cheerio 的开发。如果您在工作中使用到 Cheerio,请考虑让 您的公司支持我们!
最后,感谢您使用 Cheerio 🙇🙇♀️