WWW-Mechanize-1.02 > WWW::Mechanize::FAQ

名前

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::SSLCrypt::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]>