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

Unable to read RSS feed using node htmlparser

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

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));

它总是 returns 以下内容而不是返回提要数组:

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

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

看来,根据 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));
});