Node.js 无法使用节点HTMLPasser读取RSS源
我尝试使用以下代码阅读slashdot 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
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
函数。