我是Perl的新手,目前正在编写一个Perl脚本来自动填充Web表单并使用LWP提交它们。网站网址为***/something.cgi
,在该文档中有一个我需要填写的表单,然后点击提交。这会将我带到另一个页面,其中有另一个表单需要填写,但网站的URL保持不变。
我设法填写第一张表格并使用以下方式提交:
$res = $ua->request($f->press("submit"));
,其中
my $f = HTTP::Request::Form->new($forms[0], $url);
查看$res->as_string
会显示下一页的来源,但尝试获取新表单以填充它,但它给了我与我已有的相同的表单。我如何获得下一页以填写表格并继续?
答案 0 :(得分:2)
我建议您查看WWW::Mechanize及其form methods,它是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;
答案 1 :(得分:0)
您尝试编写脚本的表单必须使用某个参数或Cookie来确定要处理的多页表单的哪个页面。查看
中返回的cookieprint $res->header();
查看是否为您需要传回的会话ID或其他参数设置了Cookie。
另外,查看第一个表单页面与第二个表单页面的来源,看看是否有隐藏的输入类型表明第二个表单是第二个表单页面。或者,查看提交按钮标记的值,可能在第二页上有所不同。