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>

通读cheerio API相关推荐

  1. cheerio api

    载入html 首选 var cheerio = require('cheerio'),$ = cheerio.load(html); 将HTML作为字符串参数传入: $ = require('chee ...

  2. Node学习记录: 图片爬虫

    一 const request = require('request'); request 对http进行封装的npm request(url,(err,req)=>{ let body=req ...

  3. cheerio 中文文档

    介绍 把HTML告诉你的服务器. const cheerio = require('cheerio'); const $ = cheerio.load('<h2 class="titl ...

  4. 【nodeJs】cheerio

    cheerio是什么? cheerio(https://github.com/cheeriojs/cheerio ) 大家可以理解成一个 Node.js 版的 jquery,用来从网页中以 css s ...

  5. vue中refs的使用

    最近在看其他项目的过程中,发现在dom节点上使用了ref="xxx"的使用,以前一直不知道该属性起着什么作用,因为一直忙着写项目. 这两天项目不忙了,有闲心来看别人做的项目了,就看 ...

  6. node.js爬虫爬取电影天堂,实现电视剧批量下载。

    2019独角兽企业重金招聘Python工程师标准>>> ###一.项目描述   引言:在电影天堂下电视剧的下伙伴有木有发现,它没有提供批量下载功能,美剧英剧还好,10集左右,我就多点 ...

  7. HTTP网络编程(客户端)

    HTTP协议 浏览器访问过程 改文章参考相关链接:https://blog.csdn.net/m_buddy/article/details/77800998 总结起来大概的流程是这样的: 浏览器本身 ...

  8. python批量读取csv并入库pg_如何通读CSV然后在Python中发布批量API调用

    看看这个片段:user_list = get_users() # ['user_1', 'user_2', ... , 'user_n'] TOTAL_USERS = len(user_list) s ...

  9. Unity API通读 CustomEditor

    告诉一个编辑器类是哪种运行类型的编辑器 在为组件制作自定义编辑器时 你需要把这个属性放到编辑器类上 UnityEditor类 ·属性 isFallback 如果为true 则仅当所有的非回退编辑器不匹 ...

最新文章

  1. 狼奔代码生成工具使用心得
  2. MVC控件类型-自定义控件
  3. Asp.Net微型服务器使用次数统计
  4. android make 没反应
  5. AJAX中日历控件的应用
  6. 使用kubectl delete pods xxx删除对应的pod,提示删除成功,但是立马又会生成一个。为何?
  7. vue3.x案例 购物车
  8. 电脑机箱cad图纸_如何批量打印高清黑白CAD图纸?这么好用的方法现在才知道
  9. MAC地址和IP地址的关系
  10. Hbase快照Snapshot 数据备份、恢复与迁移
  11. Bootstrap响应式图片
  12. c语言屏蔽按键,VC实现让关闭按钮成灰色不可用的方法
  13. 远程连接mysql速度慢的解决方法:skip-name-resolve取消DNS的反向解析
  14. html源码加密ensure-china_php源码加密方法详解
  15. 苹果亮度自动调节怎么关闭_iPhone 总是自动亮屏,该怎么关闭?
  16. 新手必备的15款渲染器,超级干货不要错过
  17. 《奥黛丽·赫本》一辈子活在优雅里
  18. RS/CQI/SINR/RSRP/RSSI都是什么意思?
  19. 实例:泰坦尼克号幸存者的预测
  20. [转]架构必备:Rate limiting 的作用和常见方式

热门文章

  1. Vue中使用vue-video-player视频播放器
  2. 微信支付的支付金额计算
  3. Citric I 模拟赛心得
  4. unity中碰撞检测方法
  5. 鼠标悬停下划线显示特效,html鼠标悬停显示下划线
  6. java微信公共帐号支付(JS支付)
  7. curl put请求
  8. 第25章 燕尾蝶1
  9. 以太坊源码分析-同步之Syncing接口
  10. ODrive AP调试记录