关闭

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

标签: node.jscheerio模块爬虫简单实例
2455人阅读 评论(0) 收藏 举报
分类:

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

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

安装 npm install cheerio

实例1: 构建Dom结构

//使用 cheerio 生成Dom 结构
var cheerio=require('cheerio');
var $=cheerio.load('<div class="container"></div>');
//console.info($);
var container=$('.container');
//console.info(container);
for(var i=0;i<10;i++){
	//方法1
	//container.append('<div class="item">'+i+'</div>');
	//方法2 
	var item=$('<div />');
	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/' } ]
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:690972次
    • 积分:10044
    • 等级:
    • 排名:第1708名
    • 原创:416篇
    • 转载:145篇
    • 译文:1篇
    • 评论:93条
    最新评论