nodejs之cheerio介绍

    cheerio是一个nodejs实现的类似jquery核心功能的一个模块,用它可以方便的将字符串解析成DOM文档,像用jquery一样方便的操作html。cheerio结合前面提到的nodejs的spider,可以将抓取的网页方便的提取出自己所需的内容。

1. 安装cheerio

    npm install cheerio

2. 加载html

var cheerio = require('cheerio');
var $ = cheerio.load('<div><p>一行文字</p><img id = "img1" src="/a.jpg"/><img src="/b.jpg"/></div>');

3. 操作DOM

var p = $('p').text();
var img = $('#img1').attr('src');
console.log(p);
console.log(img);

可以看到代码和jquery非常的相似。下面是each函数的用法

$('img').each(function (i, item) {
    var src = $(item).attr('src');
    console.log(src);
});

在开发本博客系统的过程中,我使用了cheerio生成的首页的文章列表中的摘要内容。博客的摘要首先列出了文章中3个图片,前300字采用文字环绕的方式。用cheerio实现很方便。假设前面那个html就是编写的文章。代码如下

var abstract = '';
$('img').each(function (i, item) {
        if (i >= 3) return false;//return false 可以提前跳出each
        abstract += '<img src="' + item.attribs.src + '">';
        //这里不能使用
        //abstract += $(item).toString();
        //因为文章原有的img标签可能带有width,height,float等属性。影响摘要的排版
});
abstract += $.root().text().substr(0, 300)
    .replace(/&/g, '&amp;').replace(/</g, '&lt;')
    .replace(/'/g, '&quot;') + '...';
console.log(abstract);
留言: