2010-05-31 53 views
1

我試圖搜索並下載特定圖像/封面/封面/如果發現網站,但無論我做什麼,我總是隻下載其中的一個。如果找到了,我應該在我的代碼中更改哪些內容以下載它們?下載特定圖片

use strict; 
use warnings; 
use LWP; 
use LWP::UserAgent; 
use URI::Escape; 
use HTTP::Status; 

getCover(...); 

sub getCover { 

...... 


    while ($title_found =~ /'(http:\/\/images.blu-ray.com\/movies\/covers\/\d+_.*?)'/gis) {   
    $url = getSite($1); 
    if ($title_found =~ /front/) { 
     $filename = 'front.jpg';   
    } 
    elsif ($title_found =~ /back/) { 
     $filename = 'back.jpg'; 
    } 
    } 
    my $dir = 'somepath'.$filename;  
    open F, ">", $dir;   
     binmode F; 
     print F $url; 
    close F; 
    return 0; 
} 


sub getSite { 
$url = shift; 

print "URL: $url\n"; 

my $r; 
my $ua = new LWP::UserAgent(); 

$ua->agent("Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3) Gecko/20030312"); 

my $req = new HTTP::Request GET => $url; 

$req->push_header("Accept-Language", "en"); 

$req = $ua->prepare_request($req); 

my $res = $ua->request($req); 
my $rc = $res->code; 

if(is_success($rc)){ 
    $r = $res->as_string(); 
    $r = $res->content(); 
    } 

    else { 
    print "Failed\n"; 
    } 

return $r; 
}  
+0

找出'while'循環的主體在內部執行print語句的次數。假設'getSite'確實會讓人期待這段代碼看起來正確。 – msw 2010-05-31 03:22:32

+0

我已經添加了getSite正在做的事情。我有兩個子和打印語句在第二,我得到兩個$ url被發現 - 前面和後面,但只有一個被下載。 – thebourneid 2010-05-31 03:48:05

回答

2

嘗試把該保存部分'somepath'.$filenamewhile環內,而不是外面。

此外,看起來$title_found應該包含多個網址。在這種情況下,您需要將$1保存到一個臨時變量中,然後在其中查找前/後,而不是在$title_found中查找。否則,你會結束保存兩個封面front.jpg