feedpp和会话ID

时间:2011-12-28 14:03:27

标签: perl rss feeds sessionid

我们使用Perl和cpan Modul FeedPP来解析RSS源。 Perl脚本通过RSS源的不同项运行并保存到数据库的链接,用他的:

my $response = $ua->get($url);

if ($response->is_success) {
        my $feed = XML::FeedPP->new( $response->content, -type => 'string' );
                foreach my $item ( $feed->get_item() ) {
                        my $link = $item->link();
                        [...]

$url包含RSS Feed的网址,例如http://my.domain/RSS/feeds.xml

在这种情况下,$item->link()将包含指向RSS文章的链接,例如http://my.domain/topic/myarticle.html

问题是,一些网络服务器(提供RSS源)会进行HTTP引用,以便为URL添加会话ID,如下所示:http://my.domain/RSS/feeds.xml;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD

奇怪的是,feedPP接口将此会话ID添加到每个项目的链接中。因此$item->link()包含指向RSS文章的链接,例如http://my.domain/topic/myarticle.html;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD

即使原始链接不包含会话ID。

有没有办法改变feedPP的行为?

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:0)

我查看了http://metacpan.org/pod/XML::FeedPP,但没有看到任何方法让link()方法为您修剪这些会话ID。 (我在我的一个脚本中使用XML :: FeedPP,而我碰巧解析的网站不使用会话ID。)

所以我认为答案是否定的,目前不是。您可以尝试联系作者或提交错误。

答案 1 :(得分:0)

恕我直言,行为是正确的:uri跟随分号的组件被定义为路径的一部分(解释的配置参数),所以当使用uri将相对url创建为绝对uri时,它需要是也被复制了。

您期望与'&'的兼容行为参数,但它们不相等。 https://rt.cpan.org/Ticket/Display.html?id=73895