2011-01-12 78 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第一,如果已安装...