我开始用Perl搞乱Web。我使用Windows和ActivePerl。我写了一个脚本,下载MP3文件(这是一个电台脱口秀节目的存档,所有的法律,在你想知道:)情况下)它(理论上)用Perl下载网站上的几个文件
- 解析网站
- 收集所有链接指向一个MP3文件到一个数组通过数组
- 迭代和下载的所有文件
然而,脚本发现所有的链接,该阵列是确定的,但只下载一个文件。这肯定是一个基本的错误,但我找不到它。请指出我的错误,谢谢。
use strict;
use warnings;
use WWW::Mechanize;
use LWP::Simple;
use File::Basename;
my $mech = WWW::Mechanize->new(autocheck => 1);
$mech->get("http://something_or_other.html");
my @mp3links = $mech->find_all_links(
tag => "a",
url_regex => qr/\.mp3$/,
);
print "\n";
foreach my $link (@mp3links) {
my $url = $link->url();
my $localfile = basename($url);
my $localpath = "d:\\Downloads\\$localfile";
print "$localfile\n";
getstore($url, $localpath);
}
您是否尝试过使用调试器来检查@ mp3links是否包含您期望它包含的内容,并且为每次迭代正确生成$ localpath? – pmakholm
如果你改变'getstore()'调用''warn'$ url => $ localpath \ n“',它会起作用吗?在进入'foreach'循环之前,您是否打印过Dumper(\ @ mp3links)? – s0me0ne
'print“$ localfile \ n”'语句是否显示您期望的所有文件? – Borodin