0

私はPerlを初めて使用し、現在Webフォームに自動的に入力してLWPを使用して送信するPerlスクリプトを作成しています。WebサイトのURLは***/something.cgiであり、そのドキュメントには、入力する必要のあるフォームがあり、[送信]をクリックします。別のフォームに入力する別のページに移動しますが、WebサイトのURLは同じままです。

私はなんとか最初のフォームに記入し、以下を使用して送信しました。

$res = $ua->request($f->press("submit"));

どこ

my $f = HTTP::Request::Form->new($forms[0], $url);

表示$res->as_stringすると次のページのソースが表示されますが、それを埋めるために新しいフォームを取得しようとしましたが、それは私がすでに持っているのと同じフォームを私に与えました。フォームに記入して続行するには、次のページを取得するにはどうすればよいですか?

4

2 に答える 2

2

LWP::UserAgentのサブクラスであるWWW::Mechanizeとそのフォームメソッドを確認することをお勧めします。

編集

私の最初のリンクからの例に密接に基づいて例を追加します:

use strict;
use warnings;

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

$mech->get( 'http://google.com' );
sleep 1; ## be nice

$mech->submit_form(
    form_number => 0,
    fields      => {
        q       => 'mungo',
    }
);

print $mech->content;
于 2011-08-01T16:05:31.757 に答える
0

スクリプト化しようとしているフォームは、複数ページのフォームのどのページを処理するかを決定するために、何らかのパラメータまたはCookieを使用している必要があります。返されたCookieを見てください

print $res->header();

戻す必要のあるセッションIDまたはその他のパラメーターにCookieが設定されているかどうかを確認します。

また、最初のフォームページと2番目のフォームページのソースを見て、2番目の送信が2番目のフォームページに対するものであることを示す非表示の入力タイプがあるかどうかを確認します。または、送信ボタンタグの値を確認します。これは、2ページ目では異なる可能性があります。

于 2011-08-01T22:58:00.733 に答える