WWW::Mechanize и yellowpages.com

Я пытаюсь выполнить поиск на сайте yellowpages.com через модуль Perl WWW::Mechanize.

$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 на этот сайт? Как я могу этого избежать?


person manuel    schedule 02.09.2011    source источник
comment
Я вернулся к версии 1, потому что в противном случае вопрос не имеет смысла. (Не волнуйтесь, мы все делаем ошибки :))   -  person Zaid    schedule 02.09.2011


Ответы (1)


Сначала вы пропустили " после условий поиска. Глядя на исходный код желтых страниц, нет формы с именем «стандартная форма поиска». Форма имеет идентификатор "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();

РЕДАКТИРОВАТЬ:

также условия поиска и местоположение поиска являются входными идентификаторами, где в документации WWW::Mechanize говорится:

Учитывая имя поля, установите его значение в указанное значение

Это означает, что вы должны изменить их на: search_terms и geo_location_terms.

person Dimitar Petrov    schedule 02.09.2011
comment
Спасибо, поправил в своем посте. Я также попробовал searchform-form и получил ту же ошибку. Код работает для вас? - person manuel; 02.09.2011
comment
Это идентификатор формы, поэтому он должен быть form_id вместо form_name. - person Dimitar Petrov; 02.09.2011
comment
Большое спасибо, я изменил его на form_id, а также изменил идентификаторы на имена. Работает сейчас! - person manuel; 02.09.2011