11

WWW::Mechanizeを使用してファイルから読み取り、Web サイトで自動化されたタスクを実行する Perl スクリプトがあります。ただし、特定のページをリクエストするたびに、Web サイトは 302 リダイレクトを使用します。リダイレクトされたくない (リダイレクト先のページの応答に時間がかかりすぎる)。ファイルをループして、最初のリンクを何度も呼び出したいだけです。WWW::Mechanize がリダイレクトに従わないようにする方法がわかりません。助言がありますか?

4

3 に答える 3

10

WWW::MechanizeのサブクラスですLWP::UserAgent。したがって、任意の方法を使用できLWP::UserAgentます。

my $mech = WWW::Mechanize->new();
$mech->requests_redirectable([]);
于 2009-05-21T19:49:38.633 に答える
5

WWW::Mechanize は LWP::UserAgent のサブクラスです。LWP::UserAgent の場合と同様に、コンストラクタで max_redirect または requests_redirectable オプションを設定できます。

于 2009-05-21T19:52:30.217 に答える
4

次の例のように、$agent->max_redirect( 0 ); を使用できます。

#!/usr/bin/perl -w
use strict;

use WWW::Mechanize;

my $agent = WWW::Mechanize->new( 'autocheck' => 1, 'onerror' => undef, );
$agent->max_redirect( 0 );
$agent->get('http://www.depesz.com/test/redirect');
printf("Got HTTP/%s from %s.\n", $agent->response->code, $agent->uri);

$agent->max_redirect( 1 );
$agent->get('http://www.depesz.com/test/redirect');
printf("Got HTTP/%s from %s.\n", $agent->response->code, $agent->uri);

実行すると、次のように出力されます。

Got HTTP/302 from http://www.depesz.com/test/redirect.
Got HTTP/200 from http://www.depesz.com/.

したがって、 max_redirect(0) を使用すると、明らかにリダイレクトに従いません。

于 2009-05-22T05:18:52.563 に答える