2

私の仕事では、多くのワードプレス サイトを構築し、多くの切り取りと貼り付けも行います。このプロセスを合理化するために、フォーム情報を入力してワードプレスに送信できるクローラーを作成しようとしています。ただし、ログインを過ぎると、ワードプレスの管理パネルでクローラーを正しく動作させることができません。

以前にページを取得したことがあるので、ログインフォームを送信するとうまくいくことはわかっています。しかし、このスクリプトは、私が望む「設定」ページを返していないようです。このサイトをガイドとして使用しようとしています: www.higherpass.com/Perl/Tutorials/Using-Www-mechanize/3/ mechanizeの使用方法についてですが、これにはいくつかの追加のポインターを使用できます。これが私の Perl スクリプトです。いくつかのバリエーションを試しましたが、正しい方向に向ける必要があるだけです。

ありがとう!

use WWW::Mechanize;
my $m = WWW::Mechanize->new();
$url2 = 'http://www.moversbatonrougela.com/wp-admin/options-general.php';

$url = 'http://www.moversbatonrougela.com/wp-admin';
$m->get($url);
$m->form_name('loginform');
$m->set_fields('username' => 'user', 'password' => 'password');
$m->submit();

$response = $m->get($url2);
print $response->decoded_content();
4

1 に答える 1

2

以下のコード行をの直前に配置し$m->submit();ます。WWW::MechanizeはのサブクラスであるためLWP::UserAgent、LWPの任意のメソッドを使用できます。

$m->add_handler("request_send",  sub { shift->dump; return });
$m->add_handler("response_done", sub { shift->dump; return });

上記により、コードへのログインが可能になります。要求/応答のリターンコード、つまり200(OK)または302(リダイレクト)などを探します。URL要求、つまり、$m->get()がリダイレクトされているか、マシンのIPがサーバーによってブロックされている可能性があります。リダイレクトの場合は、おそらくリダイレ​​クトURLをたどるために使用でき$m->redirect_ok();ます。または、リダイレクトURLの使用をたどりたくない場合は、これを使用できます$m->requests_redirectable(これはLWPメソッドです)。ログには次のようなものが表示されます-

HTTP/1.1 200 OK

また

HTTP/1.1 302 Found 

上記のいずれも機能しない場合は、$m->submit();以下のような代替手段を使用して試してみてください-

 my $inputobject=$mech->current_form()->find_input( undef, 'submit' );
 $m->click_button(input => $inputobject);
于 2012-07-13T16:15:44.907 に答える