搜索
node.js - 爬虫爬到中文乱码该如何解决
高洛峰
高洛峰 2017-04-17 11:14:01
[Node.js讨论组]

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

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(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为何出错,待高手解疑。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号