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中SSL服务的性能
Jul 15 NodeJs
Nodejs Post请求报socket hang up错误的解决办法
Sep 25 NodeJs
nodejs教程之异步I/O
Nov 21 NodeJs
NodeJS制作爬虫全过程
Dec 22 NodeJs
nodejs使用express创建一个简单web应用
Mar 31 NodeJs
nodejs个人博客开发第五步 分配数据
Apr 12 NodeJs
Nodejs+express+ejs简单使用实例代码
Sep 18 NodeJs
nodejs使用http模块发送get与post请求的方法示例
Jan 08 NodeJs
对mac下nodejs 更新到最新版本的最新方法(推荐)
May 17 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 NodeJs
5分钟教你用nodeJS手写一个mock数据服务器的方法
Sep 10 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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 email邮箱正则
2008/10/08 PHP
phpize的深入理解
2013/06/03 PHP
解析MySql与Java的时间类型
2013/06/22 PHP
Zend Framework入门教程之Zend_View组件用法示例
2016/12/09 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
JS 获取浏览器和屏幕宽高等信息的实现思路及代码
2013/07/31 Javascript
复制网页内容,粘贴之后自动加上网址的实现方法(脚本之家特别整理)
2014/10/16 Javascript
JavaScript输出当前时间Unix时间戳的方法
2015/04/06 Javascript
JavaScript获取两个数组交集的方法
2015/06/09 Javascript
JS加载iFrame出现空白问题的解决办法
2016/05/13 Javascript
JS Array创建及concat()split()slice()的使用方法
2016/06/03 Javascript
bootstrap fileinput组件整合Springmvc上传图片到本地磁盘
2017/05/11 Javascript
详解nodejs微信jssdk后端接口
2017/05/25 NodeJs
javascript流程控制语句集合
2017/09/18 Javascript
vue.js默认路由不加载linkActiveClass问题的解决方法
2017/12/11 Javascript
微信小程序canvas绘制圆角base64图片的实现
2019/08/18 Javascript
js滚轮事件 js自定义滚动条的实现
2020/01/18 Javascript
Vue实现boradcast和dispatch的示例
2020/11/13 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python的Django中django-userena组件的简单使用教程
2015/05/30 Python
解决Matplotlib图表不能在Pycharm中显示的问题
2018/05/24 Python
Django model 中设置联合约束和联合索引的方法
2019/08/06 Python
浅谈Python3实现两个矩形的交并比(IoU)
2020/01/18 Python
使用Python发现隐藏的wifi
2020/03/04 Python
python deque模块简单使用代码实例
2020/03/12 Python
美国婴儿服装购物网站:Gerber Childrenswear
2020/05/06 全球购物
自荐信格式简述
2014/01/25 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
党员干部承诺书
2014/03/25 职场文书
提拔干部考察材料
2014/05/26 职场文书
2015年售票员工作总结
2015/04/29 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
好人好事新闻稿
2015/07/17 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
JavaScript实现一键复制内容剪贴板
2022/07/23 Javascript