feedpp and session ID



我们正在使用Perl和cpan模块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提要的URL,如http://my.domain/RSS/feeds.xml

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

问题是,一些web服务器(提供RSS提要)做一个HTTP引用,以添加一个会话ID到URL,像这样:http://my.domain/RSS/feeds.xml;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD

奇怪的是,feedPP似乎要将这个session-ID添加到每个项目的链接中。$item->link()包含RSS文章的链接,如http://my.domain/topic/myarticle.html;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD

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

是否有一种方法来扭转feedPP的行为?

谢谢你的帮助。

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

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

IMHO,行为是正确的:分号后面的uri组件被定义为路径的一部分(用于解释的配置参数),所以当uri用于将相对url转换为绝对uri时,它也需要被复制。

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

最新更新