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 后缀名判断限制代码
Mar 31 NodeJs
轻松创建nodejs服务器(8):非阻塞是如何实现的
Dec 18 NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
nodejs简单实现操作arduino
Sep 25 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
nodejs基于express实现文件上传的方法
Mar 19 NodeJs
关于Mac下安装nodejs、npm和cnpm的教程
Apr 11 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
Nodejs文件上传、监听上传进度的代码
Mar 27 NodeJs
ubuntu系统下使用pm2设置nodejs开机自启动的方法
May 12 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中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP上传文件及图片到七牛的方法
2018/07/25 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
奇妙的js
2007/09/24 Javascript
javascript dom 基本操作小结
2010/04/11 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
第三篇Bootstrap网格基础
2016/06/21 Javascript
详解微信小程序——自定义圆形进度条
2016/12/29 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
Angular.JS利用ng-disabled属性和ng-model实现禁用button效果
2017/04/05 Javascript
Vue学习笔记进阶篇之过渡状态详解
2017/07/14 Javascript
VueJS组件之间通过props交互及验证的方式
2017/09/04 Javascript
解决js ajax同步请求造成浏览器假死的问题
2018/01/18 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
简单了解JavaScript中常见的反模式
2019/06/21 Javascript
layui--select使用以及下拉框实现键盘选择的例子
2019/09/24 Javascript
element日历calendar组件上月、今天、下月、日历块点击事件及模板源码
2020/07/27 Javascript
用python分割TXT文件成4K的TXT文件
2009/05/23 Python
Python 不同对象比较大小示例探讨
2014/08/21 Python
python妙用之编码的转换详解
2017/04/21 Python
python自动化报告的输出用例详解
2018/05/30 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python实现图片识别加翻译功能
2019/12/26 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
利用pyecharts读取csv并进行数据统计可视化的实现
2020/04/17 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
美国Lolё官网:购买大胆而美丽的女性运动服装
2017/05/22 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
幼儿园家长会欢迎词
2014/01/09 职场文书
《艾尔登法环》1.03.3补丁上线 碎星伤害调整
2022/04/07 其他游戏
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers
JS实现九宫格拼图游戏
2022/06/28 Javascript