読者です 読者をやめる 読者になる 読者になる

LWP::UserAgentのrequestメソッド

perl lwp

requestメソッドを使うとGETで取得した内容をそのままファイルに
落とすことができるんですね。それだけですが。

#!/usr/bin/env perl
use strict;
use warnings;

use File::Basename;
use LWP::UserAgent;
use HTTP::Response;
use Time::HiRes;

my $url = shift @ARGV or die "$0 url\n";

my $ua  = LWP::UserAgent->new;
my $res = $ua->get($url);
die "Can't download url\n" if $res->is_error;

my $content = $res->decoded_content;
while ($content =~ m/href="([^"]+)"/g) {
    my $href = $1;

    next if $href !~ m/(?:jpg|jpeg)$/;

    if ($href !~ m/^(?:http|ftp)/ ) {
        $href = $url . $href;
    }

    my $file = basename $href;

    warn "Get $file\n";
    $ua->request(HTTP::Request->new(GET => $href), $file);

    sleep 0.3;
}