Node做网页爬虫时遇到的Html entites对象造成乱码
2016-01-26 15:50
585 查看
Node做网页爬虫时遇到的Html entites对象造成乱码
就是文字内容是这种货:
��һҳ
尝试用iconv-lite模块的decode去转码,但是失败了。
这种叫HTML Entities,可以借助一些模块来转换,比如,html-entities Github。
HTML Entities是什么请参照如下网址:
http://www.w3school.com.cn/html/html_entities.asp
html-entities的使用方法如下
在爬虫的请求上也要调整:
加上简单的伪装
使用Node爬的话,应该会用cheerio,在接受request返回的网页内容时,还是经过iconv的转换,再用cheerio
如果你不知道抓取的网页的编码的话,请使用:
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/
就是文字内容是这种货:
��һҳ
尝试用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/
相关文章推荐
- node.js安装express:'express' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- Node.js 学习(五)Node.js 事件循环
- mac下配置Node.js开发环境、express安装、创建项目
- subline上装node.js插件
- Node.js 学习(四)Node.js 回调函数
- Node.js 学习(三) NPM 使用介绍
- Node.js 学习(二) 创建第一个应用
- Node.js 学习(一) 安装配置
- node.js初探
- 前端工程师使用node.js打造日记社区教程之序章
- nodeType
- 基于Node.js实现nodemailer邮件发送
- [菜鸟初学nodejs系列] 安装socket.io库
- 默认库“library”与其他库的使用冲突;请使用 /NODEFAULTLIB:library LNK4098 的解决办法
- Nodejs的express使用教程
- nodejs实战之简单实现服务器端(顺便讲一下URL)
- NodeJs的流
- Nodejs学习路线图
- Nodejs学习路线图
- nodejs实现bigpipe异步加载页面方案