XML :: RSS :: Parser和Facebook RSS feed ......

时间:2011-12-01 13:33:57

标签: xml facebook perl rss feedparser

我需要一个子程序来解析传递给它的“任何”RSS提要。我使用XML :: RSS:Parser几次已经用于某些RSS提要,但它不适用于Facebook。

示例代码:

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 Feed的结果

xf@serv:/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 :: Parsers没有从根元素获得正确的命名空间,之后没有任何工作。想法如何解决这个问题?

我可以使用XML :: Simple或类似的东西来解析Facebook的RSS,但我想为所有rss提供一个解析器。

我将破解XML / RSS / Parser.pm以找到原因,但它不是仅为facebook更改包的解决方案。这个facebook feed在android rss reader中效果很好。

1 个答案:

答案 0 :(得分:2)

您确定要获得有效的网络反馈吗?在尝试解析您收到的内容之前,您应该检查$res->is_error。当我刚尝试你的代码时,我得到了500错误。

此外,您要求提供Atom Feed(&format=atom10)。您确定要使用RSS解析器解析它吗?我在XML::RSS::Parser documentation中看不到任何提到Atom提要的内容。