我希望在 Perl 问题上得到一些帮助。
我需要下载一个作为查询结果的 XML 文件,解析结果,从 XML 文件中获取下一个链接,下载并重复。
我已经能够很好地下载和解析第一个结果集。
我抓住了下一个 URL,但似乎返回的结果永远不会改变。即:第二次通过循环,$res->content
和第一次一样。$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";
}