通读cheerio API

来源:互联网 发布:xampp启动apache失败 编辑:程序博客网 时间:2024/05/18 00:26

https://cnodejs.org/topic/5203a71844e76d216a727d2e

所谓工欲善其事,必先利其器,所以通读了cheerio的API,顺便翻译了一遍,有些地方因为知道的比较少,不知道什么意思,保留了英文,希望各位不吝告诉我,然后一起把这个翻译完成。

###cheerio为服务器特别定制的,快速、灵活、实施的jQuery核心实现.###Introduction将HTML告诉你的服务器

var cheerio = require('cheerio'),    $ = cheerio.load('<h2 class="title">Hello world</h2>');$('h2.title').text('Hello there!');$('h2').addClass('welcome');$.html();//=> <h2 class="title welcome">Hello there!</h2>

###Installationnpm install cheerio

###Features**❤ 相似的语法:**Cheerio 包括了 jQuery 核心的子集。Cheerio 从jQuery库中去除了所有 DOM不一致性和浏览器尴尬的部分,揭示了它真正优雅的API。

**ϟ 闪电般的块:**Cheerio 工作在一个非常简单,一致的DOM模型之上。解析,操作,呈送都变得难以置信的高效。基础的端到端的基准测试显示Cheerio 大约比JSDOM快八倍(8x)。

❁ 巨灵活: Cheerio 封装了兼容的htmlparser。Cheerio 几乎能够解析任何的 HTML 和 XML document。

###What about JSDOM我写cheerio 是因为我发现我自己对JSDOM越来越沮丧。对于我来说,总是会一次又一次的碰上几个难点。

  • JSDOM内建的解析太过于严格: JSDOM附带的HTML解析不能处理很多当下的大众的网站。

  • JSDOM太慢:用JSDOM解析大型网站存在可见的延迟。

  • JSDOM太累赘:JSDOM的目标是提供一个我们在浏览器里面看到的相同的 DOM 环境。我从没有真的需要所有这些东西,我只是想要一个简单的,想死的方法去处理HTML。

###When I would use JSDOMCheerio 不会解决你的所有问题。我人会使用JSDOM如果我需要用一个在服务器上的浏览器环境,特别是如果我想要自动化一些功能测试。###API####我们将用到的标记示例

  • Apple
  • Orange
  • Pear

这是我们将会在所有的API例子中用到的HTML标记

####Loading首先你需要加载HTML。这一步对jQuery来说是必须的,since jQuery operates on the one, baked-in DOM。通过Cheerio,我们需要把HTML document 传进去。

这是首选:

var cheerio = require('cheerio'),    $ = cheerio.load('<ul id="fruits">...</ul>');

或者通过传递字符串作为内容来加载HTML:

$ = require('cheerio');$('ul', '<ul id="fruits">...</ul>');

Or as the root:

$ = require('cheerio');$('li', 'ul', '<ul id="fruits">...</ul>');

你也可以传递一个额外的对象给.load()如果你需要更改任何的默认解析选项的话:

$ = cheerio.load('<ul id="fruits">...</ul>', {    ignoreWhitespace: true,    xmlMode: true});

这些解析选项都是直接来自htmlparser ,因此任何在htmlparser里有效的选项在Chreeio里也是行得通的。默认的选项如下:

{    ignoreWhitespace: false,    xmlMode: false,    lowerCaseTags: false}

想看选项清单和它们都效果,看这个和这个

####Selectors

Cheerio的选择器用起来几乎和jQuery一样,所以API也很相似。

$(selectior,[context],[root])

选择器在 Context 范围内搜索,Context又在Root范围内搜索。selector 和context可是是一个字符串表达式,DOM元素,和DOM元素的数组,或者chreeio对象。root 是通常是HTML 文档字符串。

$('.apple', '#fruits').text()//=> Apple$('ul .pear').attr('class')//=> pear$('li[class=orange]').html()//=> <li class="orange">Orange</li>

0 0