2017-09-25 13 views
0

를 사용하여 RSS 피드를 읽을 수 없습니다 :내가 다음 코드를 사용하여 Slashdot에 RSS 피드를 읽기 위해 노력하고 노드 htmlparser

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

:

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

을 대신 항상 피드의 배열을 돌려 다음 반환 문제가 무엇입니까? 내 코드에 문제가 있습니까? 감사합니다

답변

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)); 
}); 
+0

하지 어디서나'요청()'방식을 언급 않는 문서를, 그래서 당신은 어디셨어요 :
코드는 다음과 같이해야합니까? – Cody

+0

문서에서 원시 HTML 코드가'parse' 함수에 전달되기 때문에 요청 모듈을 사용해야한다고 가정합니다. 요청 모듈은 이미 노드 구성 ([doc] (https://github.com/request/request))에 포함되어 있으며 웹 페이지의 소스 코드를 얻을 수 있습니다. 기술적으로 메모리에 소스가 있으면 설명서에보고 된대로 구문 분석 함수를 사용할 수 있습니다. –