2011-01-12 35 views
27

Używam Perla w systemie Windows XP, i muszę pobrać plik z adresu URL http://marinetraffic2.aegean.gr/ais/getkml.aspx.Jak mogę pobrać plik za pomocą Perla?

Jak powinienem to zrobić? Próbowałem używać WWW :: Mechanize, ale nie mogę się z tym pogodzić.

Jest to kod użyłem:

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

Czy możesz zakładać jakiś kod, aby pokazać to, co próbował z WWW :: Mechanize i wskazują, co nie zrobił” t działa zgodnie z oczekiwaniami? – DVK

+0

BTW, widzę pustą stronę pod tym adresem URL – DVK

+0

To jest kod, którego użyłem: my $ url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx'; my $ mech = WWW :: Mechanize-> new; $ mech-> get ($ url); Tak naprawdę to pusta strona, która powinna pobrać plik .kmz. Musisz być trwały, bo czasami nie jest pobierany. – Sfairas

Odpowiedz

56

użyję LWP::Simple do tego.

#!/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); 
+0

Próbowałem zarówno LWP, jak i mechanizacji strony WWW, ale otrzymałem komunikat o statusie nieudane: zerowanie połączenia przez peer. Url - http://27.251.47.106/BLal/Design/OPD/LabReport_Interface.aspx?TestID=LSHHI472&PID=LSHHI643736&LedgerTransactionNo=371411000582 – Gaurav

+0

Prawdopodobnie najlepiej jest podnieść to pytanie jako nowe. –

4

Jeśli pobierasz właśnie ten plik, lepiej pójdź z odpowiedzią @ davorg.

Jeśli jest to część większego procesu, uzyskujesz dostęp do źródła zasobów pobranego w postaci ciągu znaków przy użyciu metody content na swoim obiekcie .

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); 

To faktycznie opakowuje dookoła LWP::UserAgent->get. Więcej szczegółów tutaj: http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm# $ mech-> get ($ uri)

16

użyłem File::Fetch, gdyż jest to podstawowy moduł Perl (nie trzeba instalować żadnych dodatkowych pakietów) i postara wielu różnych sposoby pobierania pliku w zależności od tego, co jest zainstalowane w systemie.

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; 

Należy zauważyć, że ten moduł będzie w rzeczywistości starają się używać LWP pierwsze, jeśli jest zainstalowany ...

Powiązane problemy