nodejs爬虫抓取数据之编码问题


Posted in NodeJs onJuly 03, 2015

cheerio DOM化并解析的时候

1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现

2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时,可能就需要转义一番了

类似这些 因为需要作数据存储,所有需要转换

Халк крушит. Новый способ исполнен

nodejs爬虫抓取数据之编码问题

大多数都是&#(x)?\w+的格式

所以就用正则转换一番

var body = ....//这里就是请求后获得的返回数据,或者那些 .html()后获取的

//一般可以先转换为标准unicode格式(有需要就添加:当返回的数据呈现太多\\\u 之类的时)
body=unescape(body.replace(/\\u/g,"%u"));
//再对实体符进行转义
//有x则表示是16进制,$1就是匹配是否有x ,$2就是匹配出的第二个括号捕获到的内容,将$2以对应进制表示转换
body = body.replace(/&#(x)?(\w+);/g,function($,$1,$2){
        return String.fromCharCode(parseInt($2,$1?16:10));
       });

ok ~

当然了,网上也有很多个转换的版本,适用的就行了

后记:

当使用爬虫抓取网页数据时,cheerio模块是经常使用到底,它像jq那样方便快捷

(但有些功能并未支持或者换了某种形式,比如 jq的 jQuery('.myClass').prop('outerHTML') ,cheerio则等价于 jQuery.html('.myClass')http://www.mgenware.com/blog/?p=2514)

NodeJs 相关文章推荐
利用NodeJS和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
nodejs批量修改文件编码格式
Jan 22 NodeJs
详解nodejs与javascript中的aes加密
May 22 NodeJs
详解Nodejs的timers模块
Dec 22 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
nodejs中request库使用HTTPS代理的方法
Apr 30 NodeJs
nodejs中内置模块fs,path常见的用法说明
Nov 07 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 #NodeJs
nodejs导出excel的方法
Jun 30 #NodeJs
nodejs实现获取当前url地址及url各种参数值
Jun 25 #NodeJs
使用nodejs开发cli项目实例
Jun 03 #NodeJs
nodejs实现遍历文件夹并统计文件大小
May 28 #NodeJs
nodejs实现获取某宝商品分类
May 28 #NodeJs
Nodejs实现批量下载妹纸图
May 28 #NodeJs
You might like
简单介绍下 PHP5 中引入的 MYSQLI的用途
2007/03/19 PHP
php UTF8 文件的签名问题
2009/10/30 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
浅谈php中mysql与mysqli的区别分析
2013/06/10 PHP
PHP中使用sleep造成mysql读取失败的案例和解决方法
2014/08/21 PHP
php获取网站百度快照日期的方法
2015/07/29 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
html数组字符串拼接的最快方法
2009/09/16 Javascript
js监听表单value的修改同步问题,跨浏览器支持
2009/12/31 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
浏览器加载、渲染和解析过程黑箱简析
2012/11/29 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
Angular实现form自动布局
2016/01/28 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
2016/04/14 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
解决ie img标签内存泄漏的问题
2017/10/13 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
2018/07/19 Javascript
vue使用lodop打印控件实现浏览器兼容打印的方法
2021/02/07 Vue.js
Python的lambda匿名函数的简单介绍
2013/04/25 Python
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
Python用GET方法上传文件
2015/03/10 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
python 进程间数据共享multiProcess.Manger实现解析
2019/09/23 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
英语硕士生求职简历的自我评价
2013/10/15 职场文书
财务管理个人自荐书范文
2013/11/24 职场文书
工厂门卫岗位职责
2013/11/25 职场文书
大学生村官事迹材料
2014/01/21 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
教师网络培训感言
2014/03/09 职场文书
金砖之国观后感
2015/06/11 职场文书
BCL经典机 SONY ICF-5900W电路分析
2022/04/24 无线电