Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML::RSS::解析器和Facebook RSS源。。。_Xml_Facebook_Perl_Rss_Feedparser - Fatal编程技术网

XML::RSS::解析器和Facebook RSS源。。。

XML::RSS::解析器和Facebook RSS源。。。,xml,facebook,perl,rss,feedparser,Xml,Facebook,Perl,Rss,Feedparser,我需要一个子程序来解析传递给它的“任何”RSS提要。我已经为一些RSS提要使用过几次XML::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->

我需要一个子程序来解析传递给它的“任何”RSS提要。我已经为一些RSS提要使用过几次XML::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饲料

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提要在android rss阅读器中运行良好。

您确定收到了有效的web反馈吗?在试图解析返回的内容之前,您可能应该检查
$res->is\u error
。当我刚试过你的代码时,我犯了500个错误


此外,您还需要Atom提要(
&format=atom10
)。您确定要用RSS解析器解析它吗?我在文章中没有看到任何提到它为Atom提要工作的内容。

当然,您可以更改useragent名称,而不暗示您与Google有关系?这只是为了测试代码。感谢您对我的问题做出的贡献;-)这是有效的。我只是删除了带有is_error的错误检查,以缩短示例代码。在您链接的文档页面上,列表上有“”,我使用其他一些atom Feeds对其进行了测试,这是模块识别的名称空间列表,而不是文件格式列表。