我正在尝试使用以下代码阅读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' } ]
有什么问题?我的代码有问题吗?感谢
答案 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));
});