如何使用perl从自动下载链接下载文件

时间:2017-09-05 20:45:42

标签: excel perl

我正在尝试使用此代码使用来自LWP :: Simple的getstore下载excel文件:

use 5.010;
use strict;
use warnings;
use LWP::Simple qw(getstore);

$xls_link = "http://linksample.com/this/link/auto-downloads/when-link-is-entered.xls";
$file_dir = "file/directory/filename.xls"
getstore($xls_link, $file_dir);

由于某种原因,文件未下载。我之前使用过LWP :: Simple和图像,它们工作得很好。它们与此唯一的区别在于它是一个excel文件,并且当您输入URL时URL也会自动下载该文件。

2 个答案:

答案 0 :(得分:1)

我使用的是WWW :: Mechanize而不是getstore,而且我从链接中获得了认证错误

#!/usr/bin/perl

use 5.010;
use strict;
use WWW::Mechanize;
use IO::Socket::SSL qw();

my $xls_link = "http://linksample.com/this/link/auto-downloads/when-link-is-entered.xls";
my $file_dir = "file/directory/filename.xls"
my $mech = WWW::Mechanize->new(ssl_opts => {
SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE,
verify_hostname => 0, # this key is likely going to be removed in future LWP >6.04
});

$mech->get("$xls_link");
$mech->save_content("$file_dir");

答案 1 :(得分:0)

未经测试可能对您的请求有所帮助。

use strict;
use warnings;
use LWP::Simple;
use WWW::Mechanize;

my $xls_link = $ARGV[0]; #http://linksample.com/this/link/auto-downloads/when-link-is-entered.xls
if (! head($xls_link)) { print "\nError: Provided weblink not available...!\n";   exit;  }
else
{
    my $file_dir = "c:/file/directory/filename.xls";
    if(-e $file_dir) { print "\nError: Provided Directory/File found...!\n"; exit; }
    getstore($xls_link, $file_dir);
}