1

WWW::Mechanize失敗したダウンロードを終了せずにファイルをダウンロードするにはどうすればよいですか?

#!/usr/bin/perl

use strict;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new();

$mech->get("http://google.com/test", ':content_file' => "tmp");

print "done";
4

3 に答える 3

6

autocheck => 0コンストラクターで使用できます:

#!/usr/bin/perl

use strict;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new(
    # perldoc WWW::Mechanize | less +/autocheck
    autocheck => 0
);

$mech->get("http://google.com/test", ':content_file' => "tmp");

# Now, need to check errors manually :
# test on the HTTP return code see :
# http://en.wikipedia.org/wiki/List_of_HTTP_status_codes
my $retcode = $mech->status();
if ($retcode >= 400) {
    warn("error getting url, HTTP code: [$retcode]\n");
}

print "done\n";
于 2012-06-03T22:36:51.593 に答える
4

Try::Tinyを使用してください

#!/usr/bin/perl

use strict;
use WWW::Mechanize;
use Try::Tiny;

my $mech = WWW::Mechanize->new();

try {
    $mech->get("http://google.com/test", ':content_file' => "tmp");
}
catch {
    print "failed: $_";
}; # <-- do not forget the semicolon

print "done";

catchエラーを消音したいだけの場合は、ブロックを省略してください。

于 2012-06-03T22:32:44.643 に答える
1

ダウンロードに失敗すると死にますか?もしそうなら、'get'への呼び出しをeval..でラップしてみてください。

于 2012-06-03T21:36:48.953 に答える