WWW :: Mechanize在提交后无效

时间:2012-07-12 19:27:28

标签: perl www-mechanize

在我的工作中,我建立了很多wordpress网站,我也做了大量的剪切和粘贴。为了简化这个过程,我正在尝试制作一个可以填写表单信息并将表单信息提交给wordpress的爬虫程序。但是,一旦我通过登录,我无法让wordper管理面板中的爬虫正常运行。

我知道提交登录表单是有效的,因为我之前已经收回了该页面。但是这个脚本似乎没有返回“设置”页面,这就是我想要的。我一直在尝试使用这个网站作为指南:www.higherpass.com/Perl/Tutorials/Using-Www-mechanize/3/关于如何使用mechanize,但我可以使用一些额外的指针。这是我的Perl脚本,我尝试了一些变化,但我只需指向正确的方向。

谢谢!

use WWW::Mechanize;
my $m = WWW::Mechanize->new();
$url2 = 'http://www.moversbatonrougela.com/wp-admin/options-general.php';

$url = 'http://www.moversbatonrougela.com/wp-admin';
$m->get($url);
$m->form_name('loginform');
$m->set_fields('username' => 'user', 'password' => 'password');
$m->submit();

$response = $m->get($url2);
print $response->decoded_content();

1 个答案:

答案 0 :(得分:2)

将以下代码行放在$m->submit();之前。由于WWW::MechanizeLWP::UserAgent的子类,因此您可以使用任何LWP方法。

$m->add_handler("request_send",  sub { shift->dump; return });
$m->add_handler("response_done", sub { shift->dump; return });

以上内容将启用您的代码登录。注意请求/响应返回码,即200(OK)或302(重定向)等.URL请求,即$m->get()可能被重定向或服务器阻止机器的IP。如果是重定向,那么您可以使用$m->redirect_ok();来关注重定向网址,或者如果您不想遵循重定向网址,请使用$m->requests_redirectable(这是一种LWP方法)。日志应该显示如下 -

HTTP/1.1 200 OK

OR

HTTP/1.1 302 Found 

如果以上都不起作用,请使用下面的$m->submit();替代方案并试一试 -

 my $inputobject=$mech->current_form()->find_input( undef, 'submit' );
 $m->click_button(input => $inputobject);