用的 https://github.com/mikeal/request 来抓 HTML
var request = require('request');
var iconv = require('iconv-lite');
request('http://www.78.cn/web/chayouhuo/', function (err, resp, body) {
var bar = iconv.decode(body, 'GBK');
console.log(bar);
});
用了 iconv 了, 输出的 bar
还是乱码的。如果先存到本地文件上,再用 iconv 去转码,就不会有问题。求解
var request = require(‘request’); var iconv = require(‘iconv-lite’);
request({uri:‘http://www.78.cn/web/chayouhuo/’,encoding:null}, function (err, resp, body) { //body+=""; var bar = iconv.decode(body, ‘GBk’); console.log(bar); }); 你没传headers,也没穿encoding,也网站不知道跟你返回了那种编码,试了一下,这样就好了
/**抓取网页全文源代码、主要用来抓取新闻正文
-
@param url 需要抓取的url地址
-
@param calback */ function fetchContent(url,calback){ var req = request(url, {timeout: 10000, pool: false}); req.setMaxListeners(50); req.setHeader(‘user-agent’, ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36’) .setHeader(‘accept’, ‘text/html,application/xhtml+xml’);
req.on(‘error’, function(err) { console.log(err); }); req.on(‘response’, function(res) { var bufferHelper = new BufferHelper(); res.on(‘data’, function (chunk) { bufferHelper.concat(chunk); }); res.on(‘end’,function(){ var result = iconv.decode(bufferHelper.toBuffer(),‘GBK’); calback(result); }); }); }
这样就能正确转换编码。 可以参考下这个新闻爬虫项目 https://github.com/kissliux/rssSpider 能让你少走不少弯路
感谢回答。顺便推荐下 https://github.com/turingou/gbk ,弄gbk的东西很方便