我需要一個子程序,它應該解析傳遞給它的任何RSS源。我曾經使用過XML :: RSS:Parser已經有一些RSS feed,但它不適用於Facebook。XML :: RSS ::解析器和Facebook RSS源...
示例代碼:
use LWP::Simple;
use XML::RSS::Parser;
my $url = join '', @ARGV;
die "No URL passed" if !$url;
# facebook does not accept default LWP user agent
my $ua = LWP::UserAgent->new(agent => 'iGoogleBot');
my $res = $ua->get($url);
my $content = $res->decoded_content;
my $parser = XML::RSS::Parser->new;
my $feed = $parser->parse_string($content) or die $parser->errstr;
print "COUNT: ".$feed->item_count."\n";
與有線Facebook的結果提要
[email protected]:/tmp$ ./rss.pl 'https://www.facebook.com/feeds/page.php?id=19440638720&format=atom10'
Can't call method "contents" on an undefined value at /usr/local/share/perl/5.10.1/XML/RSS/Parser.pm line 122.
我認爲,XML :: RSS ::解析器不從根元素得到正確的命名空間,之後沒有任何作品。想法如何解決這個問題?
我可以使用XML :: Simple或類似的東西解析Facebook的RSS,但我想要一個解析器的所有rss提要。
我打算繞過XML/RSS/Parser.pm找到原因,但它不是解決方案,只能更改爲facebook包。而這個Facebook飼料在Android rss閱讀器中運行良好。
當然,您可以更改useragent名稱,而不意味着您與Google有關? – Quentin
這只是測試代碼。感謝對我的問題的貢獻;-) – user1075334