cheerio


​ 这个库是特别为服务器端实现的一个快速敏捷的Jquery核心库。

安装

npm install cheerio --save

特点

  • 熟悉的语法:它的实现是基于Jquery的核心库。它从Jquery库中移除了所有DOM的冲突和令人不爽的浏览器的东西。
  • 迅速:它始终工作在一个持续的单一的DOM模型中。对于语法解析,手动操纵和渲染都是异常地迅速。以后端-后端的标准进行测试,结果发现cheerio的运行渲染速率是JSDOM渲染的8倍。
  • 方便到不可思议:cheerio包包括Parse5语法解析器并且可选性支持htmlparser2。它可以解析HTML和XML。

API

加载方式
  • 推荐方式:

    const cheerio = require('cheerio')
    const $ = cheerio.load('html doc')
    
  • 可选方式1:

    const $ = require('cheerio')
    $('li','ul','html doc')
    
  • 可选方式2:

    /**
    * 如果要选择解析器为XML 直接在load方法中,改变可选选项的内容即可
    */
    const $ = cheerio.load('xml doc',{xml:{normalizeWhitespace:true,withDomLvl1:true,xmlMode:true,decodeEntities:true}
    })
    
选择器

​ 由于cheerio核心是选取的jquery库,所以加载方式对于一个前端程序员来说是十分的熟悉。

  • $( selector, [context], [root] )

    • selector是搜索的是根元素范围内的上下文。
    • selectorcontext可以使一个字符串表达式,一个DOM元素,一个DOM元素数组,更或者是一个cheerio对象。
    • root一般情况下是一个HTML的文本字符串。
    $('.apple','#fruit').text()
    $('ul .pear').attr('class')
    $('li[class=orange]').html()
    
属性
  • .attr(name,value)需要注意的是改变的是匹配到的第一个元素的值

    $('ul').attr('id') ##get method
    $('.apple').attr('id','favorite').html() ## set the element which class is apple
    
  • .prop(name,value)

    $('input[type="checkbox"]').prop('checked') ## return the first patched element boolean
    $('input[type="checkbox"]').prop('checked',true).val() ## return ok represent the value setted succeed.
    
  • .data(name,value)返回或者设置匹配到第一个元素的属性

    $('<div data-apple-color="red"></div>').data()
    ## =>{ appleColor: 'red' }
    $('<div data-apple-color="red"></div>').data('appleColor')
    ## => red
    const apple = $('.apple').data('kind', 'mac')
    apple.data('kind')
    ## => mac  set the kind as mac. apple.data is stated the result after manipulate.
    
  • .val(name,value)

    /**
    *   返回或者设置 input select textarea的值
    */
    $('input[type="text"]').val()
    ## => get the input default val is input_text
    $('input[type="text"]').val('test').html()
    ## => set the input value is test. The result is test.
    
  • .removeAttr(name,value)

    /**
    *  通过名字移除属性,这个名字可以使id名或者类名
    */
    $('.pear').removeAttr('class').html()
    ## => 显示的是移除类名为pear的类
    $('#pear').removeAttr('class').html()
    ## => 自行体会
    
  • .hasClass(name,value)

  • .addClass(name,value)

  • .removeClass(name,value)

  • .toggleClass(name,value)

  • .is(Selector)&& .is(element)&& .is(selection)&& .is(function(index))


文档未完,还有第二篇给大家介绍分析。
突然有点感想:知识是固定的,会灵活使用才会发挥更大的价值。

cheerio 库学习(一)相关推荐

  1. 【libevent】libevent库学习总结(一)——基础

    libevent库学习总结(一)--基础 一.基础 1.1. 介绍 Libevent是一个用于开发可伸缩网络服务器的事件通知库.Libevent API提供了一种机制来执行回调函数,当某个特定事件发生 ...

  2. Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例

    2019独角兽企业重金招聘Python工程师标准>>> 原文地址:Guava库学习:学习Guava EventBus(二)EventBus 事件订阅示例 上一篇Guava库学习:学习 ...

  3. POCO C++库学习和分析

    POCO C++库学习和分析 -- 序 1. POCO库概述: POCO是一个C++的开源库集.同一般的C++库相比,POCO的特点是提供了整一个应用框架.如果要做C++程序应用框架的快速开发,我觉得 ...

  4. muduo网络库学习(八)事件驱动循环线程池EventLoopThreadPool

    muduo是支持多线程的网络库,在muduo网络库学习(七)用于创建服务器的类TcpServer中也提及了TcpServer中有一个事件驱动循环线程池,线程池中存在大量线程,每个线程运行一个Event ...

  5. muduo网络库学习(七)用于创建服务器的类TcpServer

    目前为止,涉及到的绝大多数操作都没有提及线程,EventLoop,Poller,Channel,Acceptor,TcpConnection,这些对象的执行都是在单独线程完成,并没有设计多线程的创建销 ...

  6. muduo网络库学习(四)事件驱动循环EventLoop

    muduo的设计采用高并发服务器框架中的one loop per thread模式,即一个线程一个事件循环. 这里的loop,其实就是muduo中的EventLoop,所以到目前为止,不管是Polle ...

  7. python xlwings 切片_Python xlwings库学习笔记(1)

    Python xlwings库学习笔记(1) Python是最近几年很火的编程语言,被办公自动化的宣传吸引入坑,办公自动化必然绕不开Excel的操作,能操作Excel的库有很多,例如: xlrd xl ...

  8. python标准库学习笔记

    原创:python标准库学习笔记 数据结构 bisect 模块里实现了一个向列表插入元素时也会顺便排序的算法. struct - 二进制数据结构:用途:在 Python 基本数据类型和二进制数据之间进 ...

  9. requests库学习

    requests库学习 requests快速上手 http://2.python-requests.org/zh_CN/latest/user/quickstart.html Requests库是用来 ...

最新文章

  1. 二进制计算机课教案,计算机与二进制教案.pdf
  2. Android 引导界面制作
  3. 多种树,兔子才会撞上来
  4. 刘强东:第四次零售革命意义将超互联网
  5. 特征工程中的IV和WOE详解
  6. 面试官:InnoDB中一棵B+树可以存放多少行数据?
  7. 将Chrome设置为Jupyter_notebook的默认浏览器
  8. vue 中$index $key 已移除
  9. php 查找无限级,Ztree + PHP 无限级节点 递归查找节点法
  10. Bootstrap下拉菜单dropdown组件的使用
  11. 用mysql + node搭建一个简易工作列表网站
  12. python装饰器函数执行后日志_python使用装饰器作日志处理的方法
  13. 又把锅甩给中国!苹果和解给了300多亿,但高通业绩预测并不乐观
  14. (翻译) MongoDB(15) 在 Tarball 上安装MongoDB社区版
  15. 高清录播系统与流媒体服务器,校园高清一体式高清录播系统教学录播跟踪网络直播...
  16. QMainWindow界面添加标题栏
  17. python数据透视表对各列统计_EXCEL怎么制作数据透视表对数据进行分类统计?
  18. 关于如何在XP系统上运行opencv生成的C++动态库
  19. OpenScap基础应用
  20. Fisher Vector费舍尔向量and FIsher Kernel费舍尔核

热门文章

  1. 培养 逻辑思维和抽象能力
  2. 2021年11月数据库排行解读:openGauss跃居第三,人大金仓晋身前十
  3. MT【240】6*6放黑白子
  4. 醉酒后的《梦里水乡》
  5. 基于SpringBoot+Vue+Java+Mysql 的简历招聘系统【源码】
  6. Matlab GUI 数独游戏
  7. 【项目精选】百货中心供应链管理系统
  8. 大学毕业第一年,送外卖的心酸,我哭了整整一个夜晚
  9. XQuery查询语言及应用实例分析
  10. 一位耳鸣患者的自述---宁心清耳汤