首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML::RSS::解析器和Facebook RSS源...

XML::RSS::解析器和Facebook RSS源...
EN

Stack Overflow用户
提问于 2011-12-01 21:33:57
回答 1查看 1.2K关注 0票数 1

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

示例代码:

代码语言:javascript
复制
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的结果

代码语言:javascript
复制
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::解析器不能从根元素获得正确的名称空间,之后就什么都不能用了。想法如何解决这个问题?

我可以使用XML::Simple或类似于解析Facebook的RSS的方法,但是我想要一个解析器来解析所有的rss提要。

我将围绕XML/RSS/Parser. am来找出原因,但这并不是只为facebook更改包的解决方案。这个facebook feed在android rss阅读器中工作得很好。

EN

回答 1

Stack Overflow用户

发布于 2011-12-01 22:23:36

你确定你得到的是有效的网络订阅源吗?在尝试解析返回的内容之前,您可能应该检查$res->is_error。当我尝试你的代码时,我得到了一个500错误。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8342200

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档