2011-07-15 56 views
1

WWW :: Mechanizeを使用してサイトからコンテンツを検索したいが、最初に行うことができるようにするには、私が登録したユーザー名とパスワードでログインする必要がある。コード。私はフォームを正常に提出できるように変更する必要があります。ありがとう。Perl WWW :: Mechanize資格情報

use strict; 
use warnings; 
use WWW::Mechanize; 

my $username = "username"; 
my $password = "password"; 
my $cookie_jar; 

my $url = "http://www.albumartexchange.com/forums/ucp.php?mode=login"; 

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

$mech->credentials($username, $password); 
$mech->get($url); 

$mech->success() or die "Failed"; 

$mech->submit_form(
    form_number => 4, 
); 
die "Submit failed" unless $mech->success; 

$mech->save_content('log.txt'); 

UPDATE:

use strict; 
use warnings; 
use WWW::Mechanize; 

my $cookie_jar; 
my $mech = WWW::Mechanize->new(cookie_jar => $cookie_jar); 
$mech->get('http://www.albumartexchange.com/forums/ucp.php?mode=login'); 

$mech->submit_form(
    form_number => 4, 
    fields  => { 
     'username' 
      => 'some_username', 
     'password' 
      => 'some_password', 
    } 
); 
$mech->save_content('log.txt'); 
+0

どうして$ cookie_jarを使うのですか? CookieはデフォルトでMechanizeで有効になっていますので、ここで使用する必要はありません。 – gangabass

答えて

0

ここにcredentialsは必要ありません。ただ、使用:もちろん

$mech->submit_form(
    form_number => 4, 
    fields => { 
     username => $user, 
     password => $pass, 
    }, 
); 

がターゲットページの実際のフィールド名にusernamepasswordを変更することを忘れないでください。

0

ページがcredentialsが何のためにあるのかであるHTTP認証を使用しません。 Mechを使用してusernamepasswordフォームフィールドに記入し、ログインフォームを送信してください。

+0

私はまだログインできないので、私が投稿したアップデートのようなものを意味しますか? – thebourneid