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
Nov 08 NodeJs
Nodejs高扩展性的模板引擎 functmpl简介
Feb 13 NodeJs
详解NodeJS框架express的路径映射(路由)功能及控制
Mar 24 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
Nodejs Express 通过log4js写日志到Logstash(ELK)
Aug 30 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs检测因特网是否断开的解决方案
Apr 17 NodeJs
nodejs log4js 使用详解
May 31 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
linux 下以二进制的方式安装 nodejs
Feb 12 NodeJs
nodejs+koa2 实现模仿springMVC框架
Oct 21 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
PHP面向对象三大特点学习(充分理解抽象、封装、继承、多态)
2012/05/07 PHP
基于递归实现的php树形菜单代码
2014/11/19 PHP
php菜单/评论数据递归分级算法的实现方法
2019/08/01 PHP
php时间戳转换代码详解
2019/08/04 PHP
php5与php7的区别点总结
2019/10/11 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
jquery 3D球状导航的文章分类
2010/07/06 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
jquery formValidator插件ajax验证 内容不做任何修改再离开提示错误的bug解决方法
2013/01/04 Javascript
JavaScript栏目列表隐藏/显示简单实现
2013/04/03 Javascript
有关javascript的性能优化 (repaint和reflow)
2013/04/12 Javascript
jquery提示效果实例分析
2014/11/25 Javascript
基于PHP和Mysql相结合使用jqGrid读取数据并显示
2015/12/02 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
2016/07/22 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
浅谈angularJS的$watch失效问题的解决方案
2017/08/11 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
JS实现调用本地摄像头功能示例
2018/05/18 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
4个顶级开源JavaScript图表库
2018/09/29 Javascript
JavaScript 防盗链的原理以及破解方法
2020/12/29 Javascript
[04:36]DOTA2国际邀请赛 ti3精彩集锦
2013/08/19 DOTA
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
python定义类self用法实例解析
2020/01/22 Python
tensorflow中tf.reduce_mean函数的使用
2020/04/19 Python
HTML5 MiranaVideo播放器 (代码开源)
2010/06/11 HTML / CSS
英国最大的高品质珠宝和手表专家:Goldsmiths
2017/03/11 全球购物
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
酒店公关部经理岗位职责
2013/11/24 职场文书
售后主管岗位职责
2013/12/08 职场文书
三好学生自我鉴定
2013/12/17 职场文书
《记承天寺夜游》教学反思
2014/02/16 职场文书
股权投资意向书
2014/04/01 职场文书
Redis集群新增、删除节点以及动态增加内存的方法
2021/09/04 Redis