cheerio 是nodejs特別為服務(wù)端定制的,能夠快速靈活的對(duì)JQuery核心進(jìn)行實(shí)現(xiàn),工作于DOM模型上,并且解析、操作、呈送都很高效
//示例
var html = '<ul id="fruits">' +
' <li class="apple">Apple</li>' +
' <li class="orange">Orange</li>' +
' <li class="pear">Pear</li>' +
'</ul>';
-
.load引入我們要解析的html
var cheerio = require('cheerio');
$ = cheerio.load(html);
-
選擇器(selectors)
$(selector,[context],[root])(context、root通常會(huì)省略)
$('.apple')
//選擇器定位到class=“apple”
$('ul .pear')
//選擇器定位到ul中class = “pear”
$('li[class = orange]')
//選擇器定位到liclass=“orange”
- 屬性操作(attr)
.attr(name[,value])獲取和設(shè)置屬性
第二個(gè)參數(shù)是可選的。當(dāng)?shù)诙€(gè)參數(shù)不存在時(shí)表示獲取屬性的值,當(dāng)有帶有第二個(gè)參數(shù)時(shí),表示設(shè)置屬性的值。如果設(shè)置一個(gè)屬性的值設(shè)置為null ,則刪除該屬性
$('ul').attr('id');
//獲取ul的id屬性名
$('apple').attr('id','favorite').html;
//class為apple的添加了個(gè)id為favorite
.removeAttr(name)移除屬性
- class操作
.hasClass(className)判斷元素class中是否包含className
.addClass(className)給元素添加className的樣式名
removeClass(className)將元素上className的樣式名移除,當(dāng)className為空時(shí)則移除所有樣式名 - DOM操作
.append(content)作為最后一個(gè)子元素插入
prepend(content)作為第一個(gè)子元素插入
.after(content)插入某一元素后面
.before(content)插入某一元素前面
.empty()清空節(jié)點(diǎn),移除所有字節(jié)點(diǎn)
.html()獲取節(jié)點(diǎn)的html內(nèi)容,傳入?yún)?shù)時(shí)設(shè)置該元素的html結(jié)構(gòu)
.text()獲取節(jié)點(diǎn)的所有文本內(nèi)容
查找元素
.find()查找符合選擇條件的元素
$('#fruits').find('li').length; //=> 3
.parent()獲取元素的父元素
.next()獲取元素的下一個(gè)兄弟元素
.perv()獲取元素的上一個(gè)兄弟元素
.children([selector])獲取元素的孩子節(jié)點(diǎn)
.siblings()獲取元素的所有同級(jí)元素(包括本身)
?
.filter(seletor/function(index))在cheerio對(duì)象集合中進(jìn)行條件篩選
.fist()獲取cheerio集合中第一個(gè)cheerio對(duì)象
.last()cheerio最后一個(gè)對(duì)象
.eq(i)根據(jù)索引值i獲取cheerio的對(duì)象(i為負(fù)值時(shí)表示從尾部開始索引)
.clone()對(duì)cheerio對(duì)象進(jìn)行復(fù)制
.eacn(function(index,element){……})遍歷每個(gè)元素
.map(function(index,element){……})對(duì)每一個(gè)元素進(jìn)行處理并返回一個(gè)值
$.root 對(duì)頂級(jí)DOM進(jìn)行操作
$.contains(container,contained)判斷container是否有contained