0

Perl モジュール WWW::Mechanize を介して yellowpages.com を検索しようとしています。

$mech->get( "http://www.yellowpages.com" );
$mech->form_name( "standard-searchform" );
$mech->field( "search-terms, "schneider" );
$mech->field( "search-location", "CA" );
$mech->submit();

ボタンの値/タイプで $mech->submit_form( ... ) も試しましたが、常に次のメッセージが表示されます。

Error POSTing http://www.yellowpages.com/real_deals: Internal Server Error at /usr/lib/cgi-bin/index.pl line 39

39行目は

$mech->submit();

yp.com は Mechanize をそのサイトに転送していますか? どうすればそれを回避できますか?

4

1 に答える 1

1

"まず、検索語の後を見逃しました。イエローページのソースコードを見ると、「standard-searchform」という名前のフォームはありません。フォームのIDは「searchform-form」です。したがって、その例は機能するはずです。

my $mech = WWW::Mechanize->new;

$mech->get( "http://www.yellowpages.com" );
$mech->form_id( "searchform-form" );
$mech->field( "search-terms", "schneider" );
$mech->field( "search-location", "CA" );
$mech->submit();

編集:

また、search-termsとsearch-locationは入力IDであり、WWW::Mechanizeのドキュメントには次のように書かれています。

フィールドの名前を指定して、その値を指定された値に設定します

つまり、search_termsとgeo_location_termsで変更する必要があります。

于 2011-09-02T08:14:22.513 に答える