Node.js 无法使用节点HTMLPasser读取RSS源

Node.js 无法使用节点HTMLPasser读取RSS源,node.js,rss,html-parsing,html-parser,Node.js,Rss,Html Parsing,Html Parser,我尝试使用以下代码阅读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(handl

我尝试使用以下代码阅读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));
它不返回提要数组,而是始终返回以下内容:

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

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

似乎,根据的文档,您必须将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));
});

似乎,根据的文档,您必须将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));
});

文档在任何地方都没有提到
request()
方法,那么您是从哪里得到它的呢?我认为应该使用request模块,因为在文档中,它将原始html代码传递给
parse
函数。请求模块已经包含在nodejs配置()中,它允许您获取网页的源代码。从技术上讲,将源代码存储在内存中,您可以使用文档中报告的
parse
函数。文档中没有提到
request()
方法,那么您从哪里获得它呢?我想应该使用request模块,因为在文档中,它将原始html代码传递给
parse
函数。请求模块已经包含在nodejs配置()中,它允许您获取网页的源代码。从技术上讲,将源代码存储在内存中,您可以使用文档中报告的
parse
函数。