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和PhantomJS抓取网站页面信息以及网站截图
Nov 18 NodeJs
nodejs中使用monk访问mongodb
Jul 06 NodeJs
基于NodeJS的前后端分离的思考与实践(五)多终端适配
Sep 26 NodeJs
Nodejs全栈框架StrongLoop推荐
Nov 09 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs中全局变量的实例解析
Mar 07 NodeJs
Nodejs 获取时间加手机标识的32位标识实现代码
Mar 07 NodeJs
Nodejs让异步变成同步的方法
Mar 02 NodeJs
nodejs搭建本地服务器并访问文件操作示例
May 11 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
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
PHP+Redis 消息队列 实现高并发下注册人数统计的实例
2018/01/29 PHP
thinkphp5.1框架模板布局与模板继承用法分析
2019/07/19 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
jQuery Autocomplete自动完成插件
2010/07/17 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
瀑布流布局并自动加载实现代码
2013/03/12 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
Javascript模拟加速运动与减速运动代码分享
2014/12/11 Javascript
js判断手机端(Android手机还是iPhone手机)
2015/07/22 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
详解AngularJS中自定义过滤器
2015/12/28 Javascript
jQuery插件FusionCharts实现的3D柱状图效果实例【附demo源码下载】
2017/03/03 Javascript
JS获取鼠标位置距浏览器窗口距离的方法示例
2017/04/11 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
Javascript Web Worker使用过程解析
2020/03/16 Javascript
vue路由的配置和页面切换详解
2020/09/09 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
[56:46]Liquid vs IG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python连接mysql并提交mysql事务示例
2014/03/05 Python
Python实现获取前100组勾股数的方法示例
2018/05/04 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
数控技术与应用毕业生自荐信
2013/09/24 职场文书
领导检查欢迎词
2014/01/14 职场文书
雪山饭庄的创业计划书范文
2014/01/18 职场文书
七年级数学教学反思
2014/01/22 职场文书
小学生春游活动方案
2014/08/20 职场文书
员工试用期自我鉴定范文
2014/09/15 职场文书
特种设备安全管理制度
2015/08/06 职场文书
护理培训心得体会
2016/01/22 职场文书
vue @click.native 绑定原生点击事件
2022/04/22 Vue.js