2011-01-12 4 views
27

Windows XP'de Perl çalıştırıyorum ve http://marinetraffic2.aegean.gr/ais/getkml.aspx URL'sinden bir dosya indirmem gerekiyor.Perl kullanarak bir dosyayı nasıl indirebilirim?

Bunu nasıl yapmalıyım? WWW :: Mechanize kullanmayı denedim, ancak kafamı bulamıyorum.

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

Eğer WWW :: motorize ile çalıştı ve işaret göstermek için bazı kod sonrası misiniz neyin etmedim T beklendiği gibi çalışıyor mu? – DVK

+0

BTW, URL'de boş sayfa görüyorum – DVK

+0

Bu, kullandığım kod: my $ url = 'http://marinetraffic2.aegean.gr/ais/getkml.aspx'; benim $ mech = WWW :: Mechanize-> new; $ mech-> get ($ url); Evet, aslında .kmz dosyası indirmesi gereken boş bir sayfa. Kalıcı olmalısınız, çünkü bazı zamanlarda indirilmez. – Sfairas

cevap

56

Bunun için LWP::Simple kullanmak:

Bu kullandığım koddur.

#!/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

Hem LWP'yi hem de WWW'yi makineyi denedim ama Durum Okuma başarısız oldu: bağlantı eş tarafından sıfırlandı. Url - http://27.251.47.106/BLal/Design/OPD/LabReport_Interface.aspx?TestID=LSHHI472&PID=LSHHI643736&LedgerTransactionNo=371411000582 – Gaurav

+0

Bu, yeni bir soru olarak yükseltmek için muhtemelen en iyisidir. –

4

Bu dosyayı yüklüyorsanız tüm yapmanız gereken şey, @ davorg'un cevabı ile devam etmelisiniz.

Daha büyük bir sürecin parçasıysa, $mech nesnesine content yöntemini kullanarak dize olarak indirdiğiniz kaynak akışına erişebilirsiniz.

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

Bu, aslında LWP::UserAgent->get'un etrafını sarar. Burada daha fazla bilgi: http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize.pm# $ mekanizmasýna> get ( $ uri) Bu çekirdek Perl modülü (Ben herhangi bir ek paketlerin kurulumuna gerek yoktu) olduğu gibi File::Fetch kullanılan ve farklı bir dizi çalışacağız

16

sistemde yüklü olanlara bağlı olarak bir dosya indirme yolları. Bu modül aslında yüklü ilk eğer LWP kullanmaya çalışır o

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; 

Not ...