1

オンライン ニュース ペーパーの RSS フィードから特殊な用語を抽出する作業を行っています。URL のダウンロードには XML::RSS::Parser と LWP::UserAgent を使用しています。cpan からのコピーペーストを実質的に使用しているにもかかわらず、動作させることができません: http://search.cpan.org/~tima/XML-RSS-Parser-1.02/Parser.pm# $feed-%3Erss_namespace_uri . 私はいつも同じエラーを受け取ります:「GetRss.pl 行 25 の未定義の値でメソッド "rss_namespace_uri" を呼び出せません」。私はすべてを試しました... LWP::Simple と XML::RSS::Parser で同じ問題があり、FileHandle を使用して管理しましたが、複数のサイトからフィードを取得し、配列。これは私のコードです:

#!/usr/bin/perl -w

use strict;
use XML::RSS::Parser;
use URI;
use LWP::UserAgent;
use Data::Dumper;

my $ua = LWP::UserAgent->new;
$ua->agent('XML::RSS::Parser Test Script');
my @places=( 'http://www.timaoutloud.org/xml/index.rdf' );

my $p = new XML::RSS::Parser;

foreach my $place ( @places ) {

         # retreive feed
        my $url=URI->new($place);
        my $req=HTTP::Request->new;
        $req->method('GET');
        $req->uri($url);
        my $feed = $p->parse($ua->request($req)->content);

        # output some values
        my $title = XML::RSS::Parser->ns_qualify('title',$feed->rss_namespace_uri);
        print $feed->channel->type.": ".$feed->channel->element($title)->value."\n";
        print "item count: ".$feed->item_count()."\n";
        foreach my $i ( @{ $feed->items } ) {
                foreach ( keys %{ $i->element } ) {
                        print $_.": ".$i->element($_)->value."\n";
                        }
                        print "\n";
                }
                # data dump of the feed to screen.
                my $d = Data::Dumper->new([ $feed ]);
                print $d->Dump."\n\n";
        }

ありがとうございました

4

1 に答える 1

0

インターネット上のリソースにアクセスする場合、このアクセスが失敗する可能性が常にあります。エラー管理を行う:

my $response = $ua->get('http://search.cpan.org/');

if ($response->is_success) {
  print $response->decoded_content;  # or whatever
} else {
  die $response->status_line;
}

—ドキュメントから盗まれたLWP::UserAgent

の使用に注意してくださいdecoded_content、これはより良いです。また、単純なための手動リクエストの作成がないことに注意してくださいGETprintを解析コードに置き換えたいと思うでしょう。

ブラウザで指定したURLにアクセスしようとすると、タイムアウトになりました。

$p->parseまた、返されたものが実際にOKであるかどうかを確認することもできます。

die "Couldn't parse feed" unless $feed;

また、use warnings

于 2013-01-24T15:48:09.110 に答える