不会的东西,再简单都是难;会的东西,再难都是简单。

给自己写的,写的通俗易懂。

cheerio:在node服务端,解析网页,是jquery的核心,去除了DOM中不一致的地方。

先获得网页的源码,再通过cheerio解析,可以迅速提出想要的字段。获得源码有点麻烦。

Load:

//使用的html字段
<ul id="fruits">
<li class="apple">Apple</li>
<li class="orange">Orange</li>
<li class="pear">Pear</li>
</ul>
//加载需要处理的字段,标准写法。
var cheerio = require('cheerio'),
$ = cheerio.load('<ul id="fruits">...</ul>', {
  ignoreWhitespace: false, //不 忽略空格
  xmlMode: false, //不使用xml模式
  lowerCaseTags: false //不区分大小写
});

Selectors:

$(selectior,[context],[root]):选择器在 Context 范围内搜索,Context又在Root范围内搜索。

属性:

.attr(name,value):在匹配的元素中只能获得第一元素的属性。如果设置一个属性的值为null,则移除这个属性。

值:

.val([value]):获得和修改input,select,textarea的value

移除属性:

.removeAttr(name)

.hasClass( className ):检查匹配的元素是否有给出的类名

.addClass(className):给元素加类

.removeClass([className])

.is(selector):任何元素匹配selector就返回true

.is(function(index)):使用判定函数,判定函数在选中的元素中执行,所以this指向当前的元素。

.find(selector):查找

.parent([selector])

.parents([selector]):父,祖父及以上元素

.closest([selector]):匹配这个元素和DOM层级关系上的祖先元素。

.next()

.nextAll()

.prev()

.preAll()

.slice(start,[end]):获得选定范围内的元素

.siblings(selector):获得被选择的同级元素,除去自己

.children(selector)

.each(function(index,element))

.map(function(index,element)):跟each好像呀?

.filter(selector):迭代一个cheerio对象,得出匹配选择器或者是传进去的函数的元素。

.filter(function(index)):如果使用函数方法,这个函数在被选择的元素中执行,所以this指向当前元素

.first()

.last()

.eq(i):i为负数,从最后一个元素向前数

改变DOM的结构:

.append(content,[content…]):在每个元素的子元素最后插入一个子元素

.prepend(content,[content,…]):在每个元素的子元素最前插入一个子元素

.after(content,[content,…]):在每个匹配元素之后插入一个元素

.before(content,[content,…]):

.remove( [selector] ):从DOM中去除匹配的元素和它们的子元素

.replaceWith( content ):

.empty():移除子元素

.html( [htmlString] ):如果htmlString有内容的话,将会替代原来的HTML

.text( [textString] ):获得元素的text内容,包括子元素。如果textString被指定的话,每个元素的text内容都会被替换。

输出:

$.html([selector]):

.toArray():取得所有的在DOM元素,转化为数组

.clone():克隆cheerio对象

$.root

$.contains( container, contained ):查看cotained元素是否是container元素的子元

$.parseHTML( data [, context ] [, keepScripts ] ):context参数对chreeio没有意义,但是用来维护APi的兼容性

cheerio笔记的更多相关文章

  1. Nodejs学习笔记(十一)--- 数据采集器示例(request和cheerio)

    目录 写在之前 示例 示例要求 采集器 加入代理 请求https 写在之后... 写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则 ...

  2. nodejs爬虫笔记(一)---request与cheerio等模块的应用

    目标:爬取慕课网里面一个教程的视频信息,并将其存入mysql数据库.以http://www.imooc.com/learn/857为例. 一.工具 1.安装nodejs:(操作系统环境:WiN 7 6 ...

  3. Nodejs学习笔记(十一)—数据采集器示例(request和cheerio)

    写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则解析数据比较繁琐些,总体来说没啥不好的,就是效率要差一些, 用nodejs写采集程 ...

  4. nodejs爬虫笔记(五)---利用nightmare模拟点击下一页

    目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...

  5. nodejs爬虫笔记(三)---爬取YouTube网站上的视频信息

    思路:通过笔记(二)中代理的设置,已经可以对YouTube的信息进行爬取了,这几天想着爬取网站下的视频信息.通过分析YouTube,发现可以从订阅号入手,先选择几个订阅号,然后爬取订阅号里面的视频分类 ...

  6. nodejs爬虫笔记(二)---代理设置

    node爬虫代理设置 最近想爬取YouTube上面的视频信息,利用nodejs爬虫笔记(一)的方法,代码和错误如下 var request = require('request'); var chee ...

  7. golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍

    golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...

  8. nodejs学习(imooc课程笔记, 主讲人Scott)

    课程地址: 进击Node.js基础(一) 进击Node.js基础(二) 1. nodejs创建服务器 var http = require('http'); //加载http模块 //请求进来时, 告 ...

  9. Nodejs全站开发学习系列 & 深入浅出Node学习笔记 & Spider抓取

    https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-S ...

随机推荐

  1. C#中导出EXCEL服务器端不用安装OFFICE

    在实际开发过程中,有时候服务器端没安装OFFICE,你和服务器管理员去商量安装个OFFICE的时候,管理员很倔犟的不给你安装的时候,这个时候就可以考虑我这个方法是实现导出EXCEL了.如果你导出的EX ...

  2. Mysql delete操作

    以下摘自官方文档:https://dev.mysql.com/doc/refman/5.7/en/insert.html 语法: DELETE [LOW_PRIORITY] [QUICK] [IGNO ...

  3. ensembl数据库的使用方法

    1)下载各种数据bam.gtf.fasta.ded等的地址 ftp://ftp.ensembl.org/../pub/release-93/

  4. IntelliJ IDEA SVN

    第一步:下载svn的客户端,通俗一点来说就是小乌龟啦!去电脑管理的软件管理里面可以直接下载,方便迅速 下载之后直接安装就好了,但是要注意这里的这个文件也要安装上,默认是不安装的,如果不安装,svn中的 ...

  5. <a>, <input>, <button>的区分与何时使用

    像 button 的原始目的就是一个通用的按钮,点击后应该触发 JavaScript, 没有其它附带的隐含的附加效果,<a> 标签的隐含附带效果就是跳转页面到其它地方,而提交表单时应该有一 ...

  6. VS 窗体大小

    锁定窗体大小,就是鼠标停在窗口边框的时候,不能拖动来改变它的大小…… 有两种方法: 1.可以把Form的属性 FormborderStyle 后面选择 FixedDialog 2.或者把Form窗体的 ...

  7. Golang之并发篇

    进程和线程 A.进程是程序在操作系统中的一次执行过程,系统进行资源分配和调度的一个独立单位. B.线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位. C.一 ...

  8. 有关gitlab的神秘操作.....version&&domain设置...

    在使用gitlab的时候,如果服务器IP变动,之前的domain写入了配置文件了,如下路径: [root@gitlab-server ~]# vim /var/opt/gitlab/gitlab-ra ...

  9. Linux下搭建gtk+2.0开发环境

    1.执行如下命令,检查系统是否已安装gtk+ pkg-config --list-all |grep gtk 若命令提示如下,则系统已安装gtk+,否则未安装. 2.若未安装,则执行如下命令进行安装 ...

  10. PAT 1065 单身狗(25)(STL-map+思路+测试点分析)

    1065 单身狗(25 分) "单身狗"是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数 N(≤  ...