码迷,mamicode.com
首页 > Web开发 > 详细

nodejs爬虫抓取数据 -- html 实体编码处理办法

时间:2015-07-01 20:36:14      阅读:161      评论:0      收藏:0      [点我收藏+]

标签:

 

cheerio DOM化并解析的时候

1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现

2.如果使用了 .html()方法,则很多情况下都会出现,这时,可能就需要转义一番了

类似这些 因为需要作数据存储,所有需要转换

Халк крушит. Новый способ исполнен

技术分享

大多数都是&#(x)?\w+的格式

所以就用正则转换一番

var body = ....//这里就是请求后获得的返回数据,或者那些 .html()后获取的

//一般可以先转换为标准unicode格式
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爬虫抓取数据 -- html 实体编码处理办法

标签:

原文地址:http://www.cnblogs.com/imwtr/p/4614297.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!