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开发cli项目实例
Jun 03 NodeJs
使用DNode实现php和nodejs之间通信的简单实例
Jul 06 NodeJs
nodejs 的 session 简单使用
Jun 06 NodeJs
NodeJS测试框架mocha入门教程
Mar 28 NodeJs
nodejs后台集成ueditor富文本编辑器的实例
Jul 11 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
nodejs结合Socket.IO实现的即时通讯功能详解
Jan 12 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
NodeJs 文件系统操作模块fs使用方法详解
Nov 26 NodeJs
Nodejs对postgresql基本操作的封装方法
Feb 20 NodeJs
Nodejs实现用户注册功能
Apr 14 NodeJs
nodejs二进制与Buffer的介绍与使用
Jul 11 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
漫荒推荐:画风超赞的国风漫画推荐 超长假期不无聊
2020/03/08 国漫
php Ubb代码编辑器函数代码
2012/07/05 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
thinkphp中字符截取函数msubstr()用法分析
2016/01/09 PHP
PHP+Ajax简单get验证操作示例
2019/03/02 PHP
从JavaScript的函数重名看其初始化方式
2007/03/08 Javascript
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
Javascript全局变量var与不var的区别深入解析
2013/12/09 Javascript
Javascript验证上传图片大小[前台处理]
2014/07/18 Javascript
项目中常用的JS方法整理
2015/01/30 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
jQuery实现下拉菜单(内容为时间)的实时更新及图表的随动更新的方法
2016/07/07 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
微信小程序顶部可滚动导航效果
2017/10/31 Javascript
vue如何进行动画的封装
2018/09/26 Javascript
Vue 中使用富文本编译器wangEditor3的方法
2019/09/26 Javascript
vue中提示$index is not defined错误的解决方式
2020/09/02 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
python使用any判断一个对象是否为空的方法
2014/11/19 Python
Windows上使用virtualenv搭建Python+Flask开发环境
2016/06/07 Python
基于python中theano库的线性回归
2018/08/31 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
详解Python解决抓取内容乱码问题(decode和encode解码)
2019/03/29 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
Python Django 封装分页成通用的模块详解
2019/08/21 Python
python类的实例化问题解决
2019/08/31 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
出纳员岗位职责
2014/03/13 职场文书
销售顾问工作计划书
2014/09/15 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
2014年体育工作总结
2014/11/24 职场文书
行政司机岗位职责
2015/04/10 职场文书
「月刊Action」2022年5月号封面公开
2022/03/21 日漫