关于html实体
发布于 7 年前 作者 yahveyeye 3236 次浏览 来自 问答

最近需要抓取一些web站点进行分析,代码如下: var req=https.get(opts, function (res) { console.log("Got response: " + res.statusCode); res.on(‘data’,function(d){ body += d; }).on(‘end’, function(){

var page= crawlerPage(body); //此处body为所谓的“乱码”,即html实体 });

想请教一下,如何将获得的html实体转为我们能看得懂的正常字符串?

4 回复

可能是编码原因 res.setEncoding(…)试试呢,

也可能是 crawlerPage 做了什么

这是不推荐的处理方法,使用bufferhelper之类的库吧

退一万步也是http实体吧!!!!

最终只能写个函数解码 function htmlDecode(str) { // 一般可以先转换为标准 unicode 格式(有需要就添加:当返回的数据呈现太多\\u 之类的时) str = unescape(str.replace(/\u/g, “%u”)); // 再对实体符进行转义 // 有 x 则表示是16进制,$1 就是匹配是否有 x,$2 就是匹配出的第二个括号捕获到的内容,将 $2 以对应进制表示转换 str = str.replace(/&#(x)?(\w+);/g, function($, $1, $2) { return String.fromCharCode(parseInt($2, $1? 16: 10)); });

return str; }

回到顶部