0

我开始在 Perl 中玩弄 Web。我使用 Windows 和 ActivePerl。我写了一个脚本,它可以下载 mp3 文件(这是一个电台脱口秀的档案,所有合法的,以防你想知道 :))它(理论上)

  • 解析网站
  • 将指向 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);   
}  
4

2 回答 2

0

哦,对不起,伙计们。这与 Perl 无关。我的互联网连接很糟糕,下载第一个文件时连接总是丢失。

于 2012-09-29T18:33:17.353 回答
0

尝试这个:

my $status = getstore($url, $localpath);
die "Error $status on $url" unless is_success($status);

另一个可能的罪魁祸首 - 如果链接包含查询字符串 (?-mark + params) basename 不会将其删除。问题是这将使它在 Windows 上无效的文件名。

于 2012-09-19T23:43:20.943 回答