码迷,mamicode.com
首页 > 其他好文 > 详细

使用cheerio爬数据兼容gbk和utf8

时间:2015-06-09 19:28:34      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

  使用cheerio爬数据的时候,有的页面不是使用utf8编码,而node只能识别utf8的编码,

因此,不得不将gbk数据转为uft8。

var http = require(‘http‘);
var iconv = require(‘iconv-lite‘);
var cheerio = require(‘cheerio‘);
var url = require(‘url‘);

var html = "";
var getURL = url.parse(‘http://bj.soufun.com/‘);
var req = http.get(getURL, function(res) {
res.setEncoding(‘binary‘); //or hex
res.on(‘data‘, function(data) { //加载数据,一般会执行多次
html += data;
}).on(‘end‘, function() {
var $ = cheerio.load(res);
var buf = new Buffer(html, ‘binary‘); //这一步不可省略
if(/gbk/i.test($(‘meta[charset]‘).attr(‘charset‘))){
var str = iconv.decode(buf, ‘GBK‘); //将GBK编码的字符转换成utf8的
}else{//将utf8编码下的binary字符还原为utf8
var str = iconv.decode(buf,‘UTF8‘);
}
console.log(str);
})
}).on(‘error‘, function(err) {
console.log("http get error:", err);
});

 

 

这样爬下来的数据不管是gbk以及utf8;最后都将爬下来的数据转为utf8

使用cheerio爬数据兼容gbk和utf8

标签:

原文地址:http://www.cnblogs.com/lds2014/p/4564009.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!