cheerio笔记
不会的东西,再简单都是难;会的东西,再难都是简单。
给自己写的,写的通俗易懂。
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笔记的更多相关文章
- Nodejs学习笔记(十一)--- 数据采集器示例(request和cheerio)
目录 写在之前 示例 示例要求 采集器 加入代理 请求https 写在之后... 写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则 ...
- nodejs爬虫笔记(一)---request与cheerio等模块的应用
目标:爬取慕课网里面一个教程的视频信息,并将其存入mysql数据库.以http://www.imooc.com/learn/857为例. 一.工具 1.安装nodejs:(操作系统环境:WiN 7 6 ...
- Nodejs学习笔记(十一)—数据采集器示例(request和cheerio)
写在之前 很多人都有做数据采集的需求,用不同的语言,不同的方式都能实现,我以前也用C#写过,主要还是发送各类请求和正则解析数据比较繁琐些,总体来说没啥不好的,就是效率要差一些, 用nodejs写采集程 ...
- nodejs爬虫笔记(五)---利用nightmare模拟点击下一页
目标 以腾讯滚动新闻为例,利用nightmare模拟点击下一页,爬取所有页面的信息.首先得感谢node社区godghdai的帮助,开始接触不太熟悉nightmare,感觉很高大上,自己写代码的时候问题 ...
- nodejs爬虫笔记(三)---爬取YouTube网站上的视频信息
思路:通过笔记(二)中代理的设置,已经可以对YouTube的信息进行爬取了,这几天想着爬取网站下的视频信息.通过分析YouTube,发现可以从订阅号入手,先选择几个订阅号,然后爬取订阅号里面的视频分类 ...
- nodejs爬虫笔记(二)---代理设置
node爬虫代理设置 最近想爬取YouTube上面的视频信息,利用nodejs爬虫笔记(一)的方法,代码和错误如下 var request = require('request'); var chee ...
- golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍
golang学习笔记17 爬虫技术路线图,python,java,nodejs,go语言,scrapy主流框架介绍 go语言爬虫框架:gocolly/colly,goquery,colly,chrom ...
- nodejs学习(imooc课程笔记, 主讲人Scott)
课程地址: 进击Node.js基础(一) 进击Node.js基础(二) 1. nodejs创建服务器 var http = require('http'); //加载http模块 //请求进来时, 告 ...
- Nodejs全站开发学习系列 & 深入浅出Node学习笔记 & Spider抓取
https://course.tianmaying.com/node 这个系列的文章看起来很不错,值得学习一下. /Users/baidu/Documents/Data/Interview/Web-S ...
随机推荐
- 列表中语句 python
找到两个列表中相同元素: list1 = [1,2,3,4,5] list2 = [4,5,6,7,8] print ([l for l in list1 if l in list2]) 输出: [4 ...
- jquery 判断checkbox是否被选中问题
1.jquery库2以上 $("#checkbox_check").click(function(){ alert($(this).prop("checked" ...
- $.ajax dataType设置为json 回调函数不执行
请求方式如下: $.xpost = function (url, data) { return $.ajax({ url: url, type: "POST", dataType: ...
- dubbo通信协议
对dubbo的协议的学习,可以知道目前主流RPC通信大概是什么情况,本文参考dubbo官方文档 http://dubbo.io/User+Guide-zh.htm dubbo共支持如下几种通信协议: ...
- Spring依赖注入:注解注入
注解注入顾名思义就是通过注解来实现注入, Spring和注入相关的常见注解有Autowired.Resource.Qualifier.Service.Controller.Repository.Com ...
- Linux中chown、chmod、chgrp
1.chgrp (转变文件所属用户组) chgrp(转变文件所属用户组)change group chgrp 用户组 文件名 ###便是这个格了.若是整个目次下的都改,则加-R参数用于递归. 如:ch ...
- KMP(2)
KMP 算法(2):其细微之处 2017 年 05 月 13 日 • 技术 系列文章目录 KMP 算法(1):如何理解 KMP KMP 算法(2):其细微之处 本篇来谈一谈 KMP 的一些细微之处,直 ...
- android textview settext卡顿深层次原因
最近在公司项目里面发现listview里面的textview在调用settext函数的时候非常耗时,当时都有点不敢相信,这是因为如果你把textview设置成wrap_content,则每次调用set ...
- Highcharts做柱状图怎样样每个柱子都是不同的颜色显示
series: [{ data: [{'color':'#F6BD0F','y':11}, {'color':'#AFD8F8','y':12}, {'color':'#8BBA00','y':13} ...
- Javascript 常用扩展方法
这篇文章纯粹是为了保存这些方法,供以后翻阅,其实一直保存在 evernote 里面,但觉得还是放到对的地方会好点. 现在收录的很少,希望以后会慢慢增多. 数组扩展 contains,remove 扩展 ...