2010-07-07 10 views
1

perl을 사용하여 사이트에서 파일을 다운로드하려고합니다. wget을 사용하지 않기로 선택했기 때문에 wget을 사용하여이 방법을 배울 수 있습니다. 내 페이지가 연결되어 있지 않거나 어딘가 내 문법에 이상이 있는지 확실하지 않습니다. 또한 페이지에 연결하고 있는지 확인하는 가장 좋은 방법은 무엇입니까?파일 다운로드시 문제가 발생했습니다.

#!/usr/bin/perl -w 
use strict; 
use LWP; 
use WWW::Mechanize; 

my $mech = WWW::Mechanize->new(); 
$mech->credentials('********' , '********'); # if you do need to supply server and realms use credentials like in [LWP doc][2] 
$mech->get('http://datawww2.wxc.com/kml/echo/MESH_Max_180min/'); 
$mech->success(); 
if (!$mech->success()) { 
    print "cannot connect to page\n"; 
    exit; 
} 
$mech->follow_link(n => 8); 
$mech->save_content('C:/Users/********/Desktop/'); 

답변

3

죄송하지만 거의 모든 것이 잘못되었습니다.

  • LWP::UserAgentWWW::Mechanize의 조합을 잘못 사용합니다. 을 $browser->get()으로 사용하면 2 모듈의 기능을 혼합 할 수 없습니다. $mech 요청을했는지 여부를 알 수 없습니다. $mech->success()을 확인하여

    use WWW::Mechanize; 
    my $mech = WWW::Mechanize->new(); 
    
    $mech->credentials('************' , '*************'); # if you do need to supply server and realms use credentials like in LWP doc 
    $mech->get('http://datawww2.wxc.com/kml/echo/MESH_Max_180min/'); 
    $mech->follow_link(n => 8); 
    

    는 당신이 얻을 결과()와 follow_link를 (확인하실 수 있습니다) : 자격 증명

  • 인수 당신은 더 아마 이런 일을하고 싶지 the doc

참조 잘되지 않습니다 결과 if (!$mech->success()) { warn "error"; ... }
follow-> link를 실행 한 후 파일에 저장하려면 $mech->content()을 사용하여 데이터를 사용할 수 있습니다. $mech->save_content('/path/to/a/file')

전체 코드 수 :

use strict; 
use WWW::Mechanize; 
my $mech = WWW::Mechanize->new(); 

$mech->credentials('************' , '*************'); # 
$mech->get('http://datawww2.wxc.com/kml/echo/MESH_Max_180min/'); 
die "Error: failled to load the web page" if (!$mech->success()); 
$mech->follow_link(n => 8); 
die "Error: failled to download content" if (!$mech->success()); 
$mech->save_content('/tmp/mydownloadedfile') 
+0

당신은 여전히 ​​얻을> 브라우저 - 사용이 arent? – shinjuo

+0

하지만 이제 어떤 페이지를 방문해야하는지 어떻게 알 수 있습니까? – shinjuo

+0

아니요, 그는'WWW :: Mechanize'의'credentials' 메소드를 사용하고 있습니다. 'http : //search.cpan.org/perldoc/WWW :: Mechanize # $ mech- % 3Ecredentials % 28_ $ username, _ $ password_ % 29' –

관련 문제