Perlの問題についての支援を期待しています。
クエリの結果であるXMLファイルをダウンロードし、結果を解析し、XMLファイルから次のリンクを取得して、ダウンロードして繰り返す必要があります。
最初の結果セットを正常にダウンロードして解析することができました。
次のURLを取得しましたが、返される結果は変わらないようです。つまり、ループの2回目$res->content
は、1回目と同じです。したがって、の値は$url
最初のダウンロード後に変更されることはありません。
スコープの問題だと思いますが、うまくいかないようです。
use LWP::UserAgent;
use HTTP::Cookies;
use Data::Dumper;
use XML::LibXML;
use strict;
my $url = "http://quod.lib.umich.edu/cgi/f/findaid/findaid-idx?c=bhlead&cc=bhlead&type=simple&rgn=Entire+Finding+Aid&q1=civil+war&Submit=Search;debug=xml";
while ($url ne ""){
my $ua = LWP::UserAgent->new();
$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)');
$ua->timeout(30);
$ua->default_header('pragma' => "no-cache", 'max-age' => '0');
print "Download URL:\n$url\n\n";
my $res = $ua->get($url);
if ($res->is_error) {
print STDERR __LINE__, " Error: ", $res->status_line, " ", $res;
exit;
}
my $parser = XML::LibXML->new();
my $doc = $parser->load_xml(string=>$res->content);
#grab the url of the next result set
$url = $doc->findvalue('//ResultsLinks/SliceNavigationLinks/NextHitsLink');
print "NEXT URL:\n$url\n\n";
}