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服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
浅谈Nodejs观察者模式
Oct 13 NodeJs
Nodejs进阶:如何将图片转成datauri嵌入到网页中去实例
Nov 21 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
NodeJS收发GET和POST请求的示例代码
Aug 25 NodeJs
nodejs 如何手动实现服务器
Aug 20 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
图解NodeJS实现登录注册功能
Sep 16 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 NodeJs
分享node.js实现简单登录注册的具体代码
Apr 26 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
如何在PHP中使用Oracle数据库(4)
2006/10/09 PHP
php中获得视频时间总长度的另一种方法
2011/09/15 PHP
PHP中几种常见的超时处理全面总结
2012/09/11 PHP
Prototype Function对象 学习
2009/07/12 Javascript
js中reverse函数的用法详解
2013/12/26 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
Vue数据驱动模拟实现4
2017/01/12 Javascript
jquery pagination分页插件使用详解(后台struts2)
2017/01/22 Javascript
详解Weex基于Vue2.0开发模板搭建
2017/03/20 Javascript
基于 Bootstrap Datetimepicker 联动
2017/08/03 Javascript
vue数组对象排序的实现代码
2018/06/20 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
2019/01/06 Javascript
vue webpack重写cookie路径的方法
2019/07/10 Javascript
微信小程序全局变量改变监听的实现方法
2019/07/15 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
2020/06/19 Javascript
[01:02:03]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS VG
2014/05/26 DOTA
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
2014/06/10 Python
浅析Python 中整型对象存储的位置
2016/05/16 Python
基于Python socket的端口扫描程序实例代码
2018/02/09 Python
在PyTorch中Tensor的查找和筛选例子
2019/08/18 Python
提升python处理速度原理及方法实例
2019/12/25 Python
俄罗斯游戏商店:Buka
2020/03/01 全球购物
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
小学生自我评价范例
2013/09/24 职场文书
仓库班组长岗位职责
2013/12/12 职场文书
给老婆的婚前保证书
2014/02/01 职场文书
个人债务授权委托书范本
2014/10/05 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
特种设备安全管理制度
2015/08/06 职场文书
2019个人半年工作总结
2019/06/21 职场文书
开学第一周日记(三篇范文)
2019/08/23 职场文书
导游词之介休绵山
2019/12/31 职场文书
利用前端HTML+CSS+JS开发简单的TODOLIST功能(记事本)
2021/04/13 Javascript