2017-09-05 55 views
0

我试图下载使用从LWP getstore ::简单的使用此代码的Excel文件下载从自动下载链接的文件:如何用perl

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也会自动下载文件。

+1

我不知道你所说的*自动下载*的意思,但它很可能的在下载的页面中通过JavaScript完成。什么是URL的文件类型?我认为这不是一个xls链接? – Borodin

+0

手动检查链接是否可用 – ssr1012

+0

链接可用,它是链接之一,一旦你在URL中输入它不会去某个页面,但会直接下载文件 – Xavia

回答

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); 
} 
+0

我收到的链接不可用错误这是否意味着该链接对getstore函数无效? – Xavia

+0

是的。你必须检查链接... – ssr1012

1

相反getstore我使用WWW ::机械化代替,而我也渐渐认证错误,从链接

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