2011.09.13

【Perl】WWW::Mechanizeを使ってみよう

ある目的のためWWW::Mechanizeを使うことにしたのでまとめておく。

WWW::Mechanizeとは?

WWW::Mechanizeはいわゆるブラウザみたいなものらしい。

PHPでもCurlがあるじゃないかとも思いましたが、動的ページだとリンクなどに
こっそりIDとか仕掛けてあってそれじゃないとできない仕組みになっていると
htmlの解析を行わないといけない。

WWW::Mechanizeはそれをもっと直感的にやることができる。
フォーム処理だとメール欄に○○をいれて、パスワードに○○をいれて、submitボタンを押す。
見たいなことができるのでブラウザ操作と同じ形でやるので簡単だし問題が出ないというわけです。

理想としてはこれのPHP版があると理想的なのだが残念ながら見つけることができなかった。
だれか知っていたら教えてください。

Linuxへのインストール

LinuxへさっくりとインストールするのであればCPANを使って入れるのが手っ取り早い。

<code>$ perl -MCPAN -e shell
CPAN> install WWW::Mechanize</code>
使い方

基本的な使い方はこんなこんな感じです。

<code>use		HTTP::Cookies;
use		WWW::Mechanize;

# cookie_jarの生成
my $cookie_jar = HTTP::Cookies->new(file => "cookie.txt", autosave => 1, ignore_discard => 1);

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

#ページ取得
$mech->get('http://localhost/login.php');

#フォームへ入れてクリックを押す
$mech->form_number();
$mech->field(user => "aaaa");
$mech->field(pass => "bbbb");
$mech->click();

#ログインできているか確認
print $mech->content();</code>

cookie_jarというクッキーの入れ先を作ってWWW::Mechanizeへ渡すとクッキーを加味した
処理を実行してくれます。

うちの環境だとignore_discardをつけないとなぜかクッキーが保存されない問題がありました。
ignore_discardをはずして動くのであればそのほうがよいと思います。

http://localhost/login.phpを開き、ページにuserとpassを入れるフォームがあり、"aaaa"、"bbbb"を各自入れてクリックする。
結果をcontent()で表示しています。

あとはこんな感じでボタンを押すやらリンクを押すとかしていくと
目的の処理ができると思います。

ニャッキ格闘列伝 > プログラム >

前の記事:
次の記事:

関連記事

コメントリスト

コメントなし