>  기사  >  웹 프론트엔드  >  Node做网页爬虫时遇到的Html entites对象造成乱码_html/css_WEB-ITnose

Node做网页爬虫时遇到的Html entites对象造成乱码_html/css_WEB-ITnose

WBOY
WBOY원래의
2016-06-24 11:28:221554검색

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/

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.