nodejs爬虫抓取数据之编码问题
2015-07-03 00:00
926 查看
cheerio DOM化并解析的时候
1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现
2.如果使用了 .html()方法,则很多情况下(多数是非英文的时候)都会出现,这时,可能就需要转义一番了
类似这些 因为需要作数据存储,所有需要转换
Халк крушит. Новый способ исполнен
大多数都是(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)
相关文章推荐
- node.js调用C++开发的模块实例
- node.js中格式化数字增加千位符的几种方法
- nodejs 修改默认的目录
- ENode框架初始化
- mapreduce.shuffle set in yarn.nodemanager.aux-services is invalid
- Websphere中Node(节点) Profile(概要文件)和Server(应用程序服务器实例)的区别
- CCLayer 与 CCParallaxNode 结合实现视差滚动界面应注意的地方
- 子结点childNodes
- leetcode Swap Nodes in Pairs 链表
- 父节点parentNode
- 边走边学Nodejs (基础入门篇)
- node.js学习笔记之常用模块介绍
- #leetcode#Count Complete Tree Nodes
- nodejs入门篇---创建工程并详解
- How-to: Resolve "Datanode denied communication with namenode because hostname cannot be resolved (ip
- 19. Remove Nth Node From End of List
- Node.js的高性能封装 Express.js
- node.js学习笔记之常用命令
- 借助Nodejs探究WebSocket
- nth-to-last-node-in-list