您的位置:首页 > Web前端 > Node.js

Node做网页爬虫时遇到的Html entites对象造成乱码

2016-01-26 15:50 555 查看
Node做网页爬虫时遇到的Html entites对象造成乱码

就是文字内容是这种货:

��һҳ

尝试用iconv-lite模块的decode去转码,但是失败了。

这种叫HTML Entities,可以借助一些模块来转换,比如,html-entities Github。

HTML Entities是什么请参照如下网址:

http://www.w3school.com.cn/html/html_entities.asp

html-entities的使用方法如下

var Entities = require('html-entities').XmlEntities;
entities = new Entities();
var str = '��һҳ';
console.log(entities.decode(str));


在爬虫的请求上也要调整:

var headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
}


加上简单的伪装

使用Node爬的话,应该会用cheerio,在接受request返回的网页内容时,还是经过iconv的转换,再用cheerio

var html = iconv.decode(body, 'gbk')
var $ = cheerio.load(html, {decodeEntities: false})


如果你不知道抓取的网页的编码的话,请使用:

res.headers['content-type']

根据返回的编码格式进行处理即可

关于网页内容转码和乱码的深层分析可以阅读如下博文:

http://www.dewen.io/q/13755

http://www.99css.com/nodejs-request-chinese-encoding/

这个帅哥的分析也很有趣

http://blog.vichamp.com/program/2015/07/04/Common-Messy-Code/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: