名前¶
WWW::Mechanize::FAQ - WWW::Mechanizeの良くある質問と回答
"X"はどうやればできるの?¶
「これこれをこうする」ことはWWW::Mechanizeでできる?¶
LWP::UserAgentでも可能であれば、yesです。WWW::Mechanizeは LWP::UserAgentのサブクラスで、したがってこのクラスから全ての すっばらしいマジックを引き継いでいます。
プロキシサーバー経由でWWW::Mechanizeを使うにはどうすれば良い?¶
プロキシの使い方についてかかれているLWP::UserAgentのドキュメントを 読んで。簡単なのは:
$mech->proxy(['http', 'ftp'], 'http://proxy.example.com:8000/');
でなければ、環境変数から指定するか:
$mech->env_proxy();
# 環境変数の設定はこんな感じ:
gopher_proxy=http://proxy.my.place/
wais_proxy=http://proxy.my.place/
no_proxy="localhost,my.domain"
export gopher_proxy wais_proxy no_proxy
全てのフォーム上のフィールドを見るにはどうすれば良い?¶
Mechanizeといっしょにインストールされているmech-dumpユーティリティを 使おう。
$ mech-dump --forms http://search.cpan.org
Dumping forms
GET http://search.cpan.org/search
query=
mode=all (option) [*all|module|dist|author]
<NONAME>=CPAN Search (submit)
JavaScriptをWWW::Mechanizeで実行させるにはどうすればよい?¶
できない。JavaScriptは完全にクライアントベースで、WWW::Mechanizeは JavaScriptを理解できないクライアントなんだ。
何で動かないのさ?¶
https:// なURLだとなんで動かないの?¶
IO::Socket::SSLとCrypt::SSLeayをインストールすることが必要だよ。
"Input 'fieldname' is readonly"って言われるんだけど、何で?¶
hiddenフィールドの値を書き換えようとしているものだから、ワーニングを 受けているんだ。
まず、君が本当にそのフィールドを変更しようというつもりで変更して いるのか、それから打ち間違いなんかはしていないかを確認しよう。 たいていは、hiddenフィールドはアクセスしているサイトのほうで何かしら 理由があって設定している。もしこの値を変更してしまうと、それは偽造 みたいなことになって、何かの機能をダメにしちゃうかも知れない。
本当にhiddenの値を変更しようとしているのであれば、その範囲では ワーニングをオフに変更しよう。
{
local $^W = 0;
$agent->field( name => $value );
}
「これこれをこう」しようとしたら、怪しげなエラーが出たんだけど?¶
エラーはチェックした?
何か間違ってない?
各アクションごとに、そのアクションが成功したかチェックした?
本当に間違ってない?
例えば、以下を試したとする:
$mech->get( "http://my.site.com" );
$mech->follow_link( "foo" );
で、get
の呼び出しが何かしらの理由でこけちゃうと、Mech内部では follow_link
が使えなくなって、怪しげなエラーをもらうことになる。 そんな時は君はGETやPOSTでページを取得するたびに、Mechが成功したか どうかを確認しなきゃいけない...してる方に賭けるってのは無しで。
$mech->get( "http://my.site.com" );
die "Can't even get the home page: ", $mech->response->status_line
unless $mech->success;
$mech->follow_link( "foo" );
die "Foo link failed: ", $mech->response->status_line
unless $mech->success;
Author¶
Copyright 2004 Andy Lester <[email protected]>