Как мне скачать файл с помощью Perl? - PullRequest
29 голосов
/ 12 января 2011

Я использую Perl в Windows XP, и мне нужно загрузить файл с 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);

Ответы [ 4 ]

60 голосов
/ 12 января 2011

Я бы использовал для этого 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);
19 голосов
/ 14 апреля 2014

Я использовал 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, если он установлен ...

4 голосов
/ 31 января 2011
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 :: Механизированная страница документации .

4 голосов
/ 12 января 2011

Если загрузка этого файла - это все, что вы на самом деле делаете, вам лучше пойти с ответом @ davorg.

Если это часть более крупного процесса, вы получите доступ к загруженному ресурсу в виде строки, используя метод content на вашем $mech объекте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...