无法使用节点 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));
});
我正在尝试使用以下代码阅读 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));
});