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开发微信公众号后台服务实例
Sep 03 NodeJs
基于NodeJS的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
Nodejs实现多人同时在线移动鼠标的小游戏分享
Dec 06 NodeJs
轻松创建nodejs服务器(10):处理POST请求
Dec 18 NodeJs
深入浅析NodeJs并发异步的回调处理
Dec 21 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
详解Nodejs 通过 fs.createWriteStream 保存文件
Oct 10 NodeJs
nodejs搭建本地服务器轻松解决跨域问题
Mar 21 NodeJs
Nodejs调用Dll模块的方法
Sep 17 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 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
php json_encode奇怪问题说明
2011/09/27 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
php购物车实现方法
2015/01/03 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
smarty学习笔记之常见代码段用法总结
2016/03/19 PHP
PHP实现会员账号单唯一登录的方法分析
2019/03/07 PHP
checkbox选中与未选中判断示例
2014/08/04 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
Angularjs中如何使用filterFilter函数过滤
2016/02/06 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
jquery实现界面无刷新加载登陆注册
2016/07/30 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
VueJS全面解析
2016/11/10 Javascript
关于react-router的几种配置方式详解
2017/07/24 Javascript
angularJs自定义过滤器实现手机号信息隐藏的方法
2018/10/08 Javascript
vue基础之data存储数据及v-for循环用法示例
2019/03/08 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
Vue+Typescript中在Vue上挂载axios使用时报错问题
2019/08/07 Javascript
小程序自动化测试的示例代码
2020/08/11 Javascript
[02:30]DOTA2放量测试专访海涛:呼吁保护新手玩家
2013/08/26 DOTA
Python自定义函数的创建、调用和函数的参数详解
2014/03/11 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
Pytorch Tensor的索引与切片例子
2019/08/18 Python
基于python的BP神经网络及异或实现过程解析
2019/09/30 Python
Python os模块常用方法和属性总结
2020/02/20 Python
python3安装OCR识别库tesserocr过程图解
2020/04/02 Python
HTML5 canvas画矩形时出现边框样式不一致的解决方法
2013/10/14 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
美国著名首饰网站:BaubleBar
2016/08/29 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
十周年庆典策划方案
2014/06/03 职场文书
2014年女职工工作总结
2014/11/27 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
新教师教学工作总结
2015/08/12 职场文书
Python爬虫基础讲解之请求
2021/05/13 Python