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

本文介绍了使用Node.js进行网页爬取时遇到的乱码问题及其解决方案,详细讲解了如何利用html-entities等模块处理HTMLEntities造成的乱码,并提供了代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)); 

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

1 var headers = {  
2   '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'
3 }

加上简单的伪装

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

1 var html = iconv.decode(body, 'gbk')
2 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/

转载于:https://www.cnblogs.com/qianyuqianxun/p/5160650.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值