2011-01-12 95 views
27

我在Windows XP上運行Perl,我需要從網址http://marinetraffic2.aegean.gr/ais/getkml.aspx下載一個文件。如何使用Perl下載文件?

我該怎麼做?我嘗試過使用WWW :: Mechanize,但是我無法理解它。

這是我使用的代碼:

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

能否請您發佈一些代碼來顯示你試着用WWW ::機械化和指出哪些沒」噸按預期工作? – DVK 2011-01-12 14:14:50

+0

順便說一句,我看到該網址上的空白頁面 – DVK 2011-01-12 14:15:16

回答

56

我會使用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); 
4

如果下載該文件是你真正做的,你最好用@ davorg的答案。

如果這是更大進程的一部分,您可以使用對象上的方法content訪問作爲字符串下載的資源。

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

16

我以前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第一,如果已安裝...