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

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

WBOY
WBOYOriginal
2016-06-24 11:28:221556Durchsuche

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/

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn