Node.Js cheerio模块--操作/解析Html

Node.Js cheerio 模块可以在服务器段想使用Jquery的方式操作Dom结构,许多用法和jquery 的语法基本相同。

为服务器特别定制的,快速、灵活、实施的jQuery核心实现.

安装 npm install cheerio

实例1: 构建Dom结构

//使用 cheerio 生成Dom 结构
var cheerio=require('cheerio');
var $=cheerio.load('
'); //console.info($); var container=$('.container'); //console.info(container); for(var i=0;i<10;i++){ //方法1 //container.append('
'+i+'
'); //方法2 var item=$('
'); item.addClass('item'); item.text(i); container.append(item); } //console.info(container.html()); console.info($.html());


示例2:解析Dom结构,网络爬虫简单实例

var http = require('http');
var cheerio = require('cheerio');
http.get('http://www.gongjuji.net', function(req, res) {
    var result = '';
    req.on('data', function(data) {
        result += data;
    });
    req.on('end', function() {
        //console.info(result);
        parseHtml(result);
    });
});
//解析html 获取内容
function parseHtml(result) {
    var $ = cheerio.load(result);
    //获取html
    //console.info($.html());
    //获取文本内容
    //console.info($.text());
    //获取文本,将多个空白符 替换成空格
    //console.info($.text().replace(/\s+/g,' '));
    //获取文本,将多个空格 替换成一个空
    //console.info($.text().replace(/[ ]+/g,' '));
    //获取文件,将多个换行替换成 一个换行
    //console.info($.text().replace(/(\r\n)+[ ]+/g,'\r\n').replace(/(\r\n)+/g,'\r\n'));
    //过去文件,将多个连续换行替换成 一个换行
    //console.info($.text().replace(/(\r\n)+/g,'\r\n'));
    //解析html内容 
    // itemList[] 
    // {title:'',linkUrl:’‘}
    var captionList = $('.body-content .caption');
    var itemList = [];
    captionList.each(function(item) {
        var cap = $(this);
        //console.log(cap.find('h3').text());
        var item = {
            title: cap.find('h3').text(),
            linkUrl: cap.find('a').attr('href')
        }
        itemList.push(item);
    });
    console.info(itemList);
  //   [ { title: 'Md5加密工具',
  //   linkUrl: 'http://md5.gongjuji.net/encrypt/' },
  // { title: 'Md5解密工具',
  //   linkUrl: 'http://md5.gongjuji.net/dencrypt/' },
  // { title: '字符统计工具',
  //   linkUrl: 'http://character.gongjuji.net/char/' },
  // { title: '字节转换工具', linkUrl: 'http://calc.gongjuji.net/byte/' } ]
}

你可能感兴趣的:(NodeJs)