2011-12-28 6 views
0

Мы используем Perl и cpan Modul FeedPP для анализа RSS-каналов. Сценарий Perl работает корыто различных элементов на RSS-каналах и сохранить ссылку на базу данных, Liket его:feedpp и session ID

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 содержит URL на RSS-канал, как http://my.domain/RSS/feeds.xml

в этом случае, $item->link() будет содержать ссылки на RSS статьи, как http://my.domain/topic/myarticle.html

Проблема в том, некоторые веб-серверы (который обеспечивает RSS-каналы) делает HTTP см для того, чтобы добавить идентификатор сессии в URL, как это: http://my.domain/RSS/feeds.xml;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD.

Странно думать, что фиды feedPP добавляют этот идентификатор сеанса к ссылке каждого элемента. Таким образом, $item->link() содержит ссылки на статью RSS, например http://my.domain/topic/myarticle.html;jsessionid=4C989B1DB91D706C3E46B6E30427D5CD

Даже если исходная ссылка не содержит идентификатор сеанса.

Есть ли способ превратить это поведение feedPP ??

Благодарим за помощь.

ответ

0

Я просмотрел http://metacpan.org/pod/XML::FeedPP, но не видел никакого способа повернуть, чтобы метод link() обрезал те идентификаторы сеанса для вас. (Я использую XML :: FeedPP в одном из моих сценариев, а на сайте, на котором я, по-видимому, разбираюсь, не использует идентификаторы сеанса.)

Так что я думаю, что ответ отрицательный, а не в настоящее время. Вы можете попытаться связаться с автором или указать ошибку.