var request = require('request'),
cheerio = require('cheerio'),
Iconv = require('iconv').Iconv;
var iconv = new Iconv('GBK', 'UTF-8');
request(opts, function (err, response, body) {
var result = iconv.convert(new Buffer(body, 'binary')).toString();
var $ = cheerio.load(result);
// ......
});
首先肯定是确定要爬的页面的编码。如果是GBK的话就需要对爬过来的文字用iconv库做转化,在nodejs中变成UTF8。比如:
除了 @ZheX 的回答,有些网页不严谨,在爬取时还要对
request
的option
进行设置,如下:其中的
encoding
不能忘,之前就遇到过这样的一个网站,同时其返回中没说明charset
。但,不加
encoding
为何出错,待高手解疑。