2017-09-05 47 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");