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中自定义事件实例
Jun 20 NodeJs
nodejs基础知识
Feb 03 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
nodejs开发——express路由与中间件
Mar 24 NodeJs
nodejs入门教程一:概念与用法简介
Apr 24 NodeJs
让nodeJS支持ES6的词法----babel的安装和使用方法
Jul 31 NodeJs
nodejs创建简易web服务器与文件读写的实例
Sep 07 NodeJs
基于nodejs实现微信支付功能
Dec 20 NodeJs
NodeJS如何实现同步的方法示例
Aug 24 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
使用 Koa + TS + ESLlint 搭建node服务器的过程详解
May 30 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学习之数据类型之间的转换介绍
2011/06/09 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
PHPStrom中实用的功能和快捷键大全
2015/09/23 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
浅析PHP7 的垃圾回收机制
2019/09/06 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jquery实现类似淘宝星星评分功能有截图
2014/09/15 Javascript
jquery实现上下左右滑动的方法
2015/02/09 Javascript
IE浏览器下PNG相关功能
2015/07/05 Javascript
javascript中 try catch用法
2015/08/16 Javascript
js 单引号替换成双引号,双引号替换成单引号的实现方法
2017/02/16 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
详解Vue组件之间的数据通信实例
2017/06/17 Javascript
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
bootstrap中日历范围选择插件daterangepicker的使用详解
2018/04/17 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
[01:09]2014DOTA2国际邀请赛 TI4西雅图DOTA2 中国美女coser加油助威
2014/07/20 DOTA
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
剖析Python的Twisted框架的核心特性
2016/05/25 Python
利用Anaconda完美解决Python 2与python 3的共存问题
2017/05/25 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
解决安装新版PyQt5、PyQT5-tool后打不开并Designer.exe提示no Qt platform plugin的问题
2020/04/24 Python
墨西哥网上超市:Superama
2018/07/10 全球购物
毕业生实习鉴定
2013/12/11 职场文书
环保建议书200字
2014/05/14 职场文书
在职员工证明书
2014/09/19 职场文书
雨花台导游词
2015/02/06 职场文书
新教师2015年度工作总结
2015/07/22 职场文书
机械生产实习心得体会
2016/01/22 职场文书
MySQL 自定义变量的概念及特点
2021/05/13 MySQL
IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
2021/09/25 Java/Android