В чем моя проблема с заполнением форм с помощью LWP и HTTP :: Request :: Form? - PullRequest
0 голосов
/ 01 августа 2011

Я новичок в Perl, в настоящее время пишу сценарий Perl для автоматического заполнения веб-форм и отправки их с использованием LWP. URL веб-сайта ***/something.cgi, и в этом документе есть форма, которую мне нужно заполнить, затем нажмите «Отправить». Это перенесет меня на другую страницу с другой формой для заполнения, но URL-адрес веб-сайта останется прежним.

Мне удалось заполнить первую форму и отправить ее, используя:

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

где

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

Просмотр $res->as_string показывает источник следующей страницы, но пытался получить новые формы, чтобы заполнить его, но он дал мне ту же форму, которую я уже имел. Как я могу получить следующую страницу, чтобы заполнить ее формы и продолжить?

Ответы [ 2 ]

2 голосов
/ 01 августа 2011

Я бы рекомендовал вам взглянуть на WWW :: Mechanize и его методы формы , которые являются подклассом LWP :: UserAgent .

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

Добавление примера, основанного на примере из моей первой ссылки:

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;
0 голосов
/ 02 августа 2011

Форма, которую вы пытаетесь написать в сценарии, должна использовать какой-либо параметр или файл cookie, чтобы определить, какую страницу многостраничной формы следует обрабатывать.Посмотрите файлы cookie, возвращенные в

print $res->header();

, чтобы увидеть, есть ли файлы cookie, установленные для идентификатора сеанса или другого параметра, который необходимо передать обратно.

Кроме того, посмотрите наисточник первой страницы формы по сравнению со второй, посмотрите, есть ли скрытые типы ввода, которые указывают, что вторая отправка предназначена для второй страницы формы.Или посмотрите на значение тега кнопки отправки, может, оно отличается на второй странице.

...