web-dev-qa-db-ja.com

Perlを使用してファイルをダウンロードするにはどうすればよいですか?

Windows XPでPerlを実行しています。URL http://marinetraffic2.aegean.gr/ais/getkml.aspx からファイルをダウンロードする必要があります。

どうすればいいですか? WWW :: Mechanizeを使用しようとしましたが、頭を悩ませることはできません。

これは私が使用したコードです:

my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx';
my $mech = WWW::Mechanize->new;
$mech->get($url);
29
Sfairas

これには LWP :: Simple を使用します。

#!/usr/bin/Perl

use strict;
use warnings;

use LWP::Simple;

my $url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx';
my $file = 'data.kml';

getstore($url, $file);
60
Dave Cross

File :: Fetch を使用しました。これはコアPerlモジュールであるため(追加パッケージをインストールする必要はありませんでした)、インストールされているものに応じてファイルをダウンロードするさまざまな方法を試みますシステム。

use File::Fetch;
my $url = 'http://www.example.com/file.txt';
my $ff = File::Fetch->new(uri => $url);
my $file = $ff->fetch() or die $ff->error;

このモジュールは、インストールされている場合、実際には最初にLWPを使用しようとすることに注意してください...

19
maloo
use WWW::Mechanize;

my $url = 'marinetraffic2.aegean.gr/ais/getkml.aspx';
my $local_file_name = 'getkml.aspx';

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

$mech->get( $url, ":content_file" => $local_file_name );

これは実際、LWP::UserAgent->get

詳細は WWW :: Mechanize docs page で見つけることができます。

4
Tomasz

実際にそのファイルをダウンロードするだけでよい場合は、@ davorgの回答をお勧めします。

これがより大きなプロセスの一部である場合は、$mechオブジェクトでメソッド content を使用して、文字列としてダウンロードしたリソースにアクセスします。

4
JB.