您的位置:首页 > Web前端 > Node.js

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

2016-08-31 12:16 936 查看
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/' } ]
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: