0

我是 Perl 新手,目前正在编写一个 Perl 脚本来自动填写 Web 表单并使用 LWP 提交它们。网站 URL 是***/something.cgi,在该文档中有一个我需要填写的表格,然后点击提交。这将我带到另一个页面,该页面需要填写另一个表格,但网站的 URL 保持不变。

我设法填写了第一个表格并使用以下方法提交:

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

在哪里

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

查看$res->as_string显示下一页源,但尝试获取新表格以填写它,但它给了我已经拥有的相同表格。我怎样才能获得下一页以填写表格并继续?

4

2 回答 2

2

我建议您查看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;
于 2011-08-01T16:05:31.757 回答
0

您尝试编写脚本的表单必须使用某些参数或 cookie 来确定要处理多页表单的哪个页面。查看返回的 cookie

print $res->header();

查看是否为您需要传回的会话 ID 或其他参数设置了 cookie。

另外,查看第一个表单页面与第二个表单页面的来源,看看是否有隐藏的输入类型表明第二个提交是针对第二个表单页面的。或者,查看提交按钮标签的值,可能在第二页上有所不同。

于 2011-08-01T22:58:00.733 回答