Подтвердить что ты не робот

Как загрузить файл с помощью Perl?

Я запускаю 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);
4b9b3361

Ответ 1

Я бы использовал 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);

Ответ 2

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

Ответ 3

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

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

Ответ 4

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. Подробнее здесь: http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm# $mech- > get ($ uri)