当前位置: 首页>NodeJS>nodejs爬虫抓取数据之编码问题

nodejs爬虫抓取数据之编码问题

时间:2015-07-05 00:30 来源:网络整理 作者:KKWL 点击:
助理编辑 nodejs爬虫抓取数据之编码问题 2015/7/4 12:12:05 [中国学网 ] | 责编:崔宁 返回首页 分享到 cheerio DOM化并解析的时候 1.假如使用了 .text()方法,则一般不会有html实体编码的问题出现

助理编辑nodejs爬虫抓取数据之编码问题

  [  中国学网   ]   |  责编:崔宁

返回首页 分享到

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')?p=2514)

相关信息

分享到:

网友评论

今日最新

  • 猜你喜欢
  • 今日最新
  • 本文相关搜索

    精彩推荐 查看更多...

    热门搜索排行榜

    顶一下
    (0)
    0%
    踩一下
    (0)
    0%
    ------分隔线----------------------------