昨天偶尔发现这么个用于nodejs抓取页面模块的一个库,官方介绍它说是一种为服务器特别定制的,快速、灵活、实施的jQuery核心实现。大致浏览了下,它的语法确实和jquery很像,所以觉得应该能很快就能上手的。
先上一段代码
let cheerio = require('cheerio')
let $ = cheerio.load('<h2 class="title">Hello world</h2>')
$('h2.title').text('Hello there!')
$('h2').addClass('welcome')
$.html()
//=> <h2 class="title welcome">Hello there!</h2>
第一步引入cheerio模块,第二步load加载某一部分你想要获得的数据。
下面开始进入学习:
官方使用一段简短的html代码来作为操作对象
<ul id="fruits">
<li class="apple">Apple</li>
<li class="orange">Orange</li>
<li class="pear">Pear</li>
</ul>
加载这段有以下几种方式:
1.let cheerio = require('cheerio');
let $ = cheerio.load('<ul id="fruits">...</ul>')
2.$ = require('cheerio');
$('ul', '<ul id="fruits">...</ul>')
3.$ = require('cheerio');
$('li', 'ul', '<ul id="fruits">...</ul>');
另外你也可以传递一个对象给load,可以更改它的默认参数
$ = cheerio.load('<ul id="fruits">...</ul>', {
normalizeWhitespace: true,
xmlMode: true
});
1.选择器 $( selector, [context], [root] )
$('.apple', '#fruits').text()
//=> Apple
$('ul .pear').attr('class')
//=>pear
$('li[class=orange]').html()
//=> Orange
2.属性
.attr( name, value )
如果你想获得元素某个属性,就不必写value,如果你想删除某个属性,value为null
$('ul').attr('id')
//=> fruits
$('.apple').attr('id', 'favorite').html()
//=> <li class="apple" id="favorite">Apple</li>
后序更新。。。。