我们使用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的行为?
感谢您提供任何帮助。
答案 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