0

私はPerlでWebをいじり始めました。私はWindowsとActivePerlを使用しています。私はmp3ファイルをダウンロードするスクリプトを書きました(これはラジオのトークショーのアーカイブであり、疑問に思われるかもしれませんが、すべて合法です:))それは(理論的には)

  • Webサイトを解析します
  • 配列へのmp3ファイルを指すすべてのリンクを収集します
  • アレイを反復処理し、すべてのファイルをダウンロードします

ただし、スクリプトはすべてのリンクを検出し、配列はOKですが、ダウンロードするファイルは1つだけです。基本的なエラーに違いありませんが、見つかりません。私の間違いを指摘してください、ありがとう。

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

これを試して:

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

別の考えられる原因-リンクにクエリ文字列(?-マーク+パラメータ)が含まれている場合、basenameはそれを切り落とさないでしょう。問題は、これによりWindowsでファイル名が無効になることです。

于 2012-09-19T23:43:20.943 に答える
0

ああ、ごめんなさい。これはPerlとは何の関係もありませんでした。私のインターネット接続はかなり恥ずかしがり屋でした、最初のファイルをダウンロードする間、接続は常に失われました。

于 2012-09-29T18:33:17.353 に答える