无法使用节点htmlparser读取RSS提要

时间:2017-09-25 13:36:48

标签: node.js rss html-parsing html-parser

我正在尝试使用以下代码阅读slashdot rss feed:

var htmlparser = require("htmlparser");
var sys = require("sys");
var handler = new htmlparser.RssHandler(function (error, dom) {
    if(error) throw error;
    console.log(dom);
});
var parser = new htmlparser.Parser(handler);
parser.parseComplete("http://rss.slashdot.org/Slashdot/slashdotMain");
console.log(handler.dom);
sys.puts(sys.inspect(handler.dom, false, null));

不是返回Feed数组,而是返回以下内容:

[ { data: 'http://rss.slashdot.org/Slashdot/slashdotMain',
    type: 'text' } ]

有什么问题?我的代码有问题吗?感谢

1 个答案:

答案 0 :(得分:2)

根据htmlparser的文档,您似乎必须将RSS源的原始html代码传递给parseComplete函数,因此,在解析网页之前,使用请求获取该源代码的源代码然后,尝试使用htmlparser模块解析数据 您的代码应如下所示:

var request = require("request");
var htmlparser = require("htmlparser");
var sys = require("sys");
var handler = new htmlparser.RssHandler(function (error, dom) {
    if(error) throw error;
    console.log(dom);
});
var parser = new htmlparser.Parser(handler);

request({
  uri: "http://rss.slashdot.org/Slashdot/slashdotMain",
}, function(error, response, body) {
   parser.parseComplete(body);
   console.log(handler.dom);
   sys.puts(sys.inspect(handler.dom, false, null));
});