爬虫爬到中文乱码该如何解决

利用Node的cheerio插件去爬一个网站的新闻,结果发现从中获得的中文显示为
“������ͼ��20140611����”乱码,求问如何解决,顺便求问不同转码格式的知识点;

阅读 10.7k
2 个回答

首先肯定是确定要爬的页面的编码。如果是GBK的话就需要对爬过来的文字用iconv库做转化,在nodejs中变成UTF8。比如:

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);
    // ......
});

除了 @ZheX 的回答,有些网页不严谨,在爬取时还要对requestoption进行设置,如下:

var options = {
    method: 'GET',
    encoding: null,
    url: example.com
}

request(options, function(err, response, body){});

其中的encoding不能忘,之前就遇到过这样的一个网站,同时其返回中没说明charset
但,不加encoding为何出错,待高手解疑。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题