2

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

我知道提交登录表单是可行的,因为我之前已经取回了该页面。但是这个脚本似乎没有返回我想要的“设置”页面。我一直在尝试将此站点用作指南: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();
4

1 回答 1

2

将以下代码行放在之前$m->submit();。因为WWW::Mechanize是一个子类,LWP::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();跟随重定向 URL,或者如果您不想跟随重定向 URL 使用$m->requests_redirectable(这是一种 LWP 方法)。日志应显示如下 -

HTTP/1.1 200 OK

或者

HTTP/1.1 302 Found 

如果上述方法均无效,请使用以下替代方法$m->submit();并试一试-

 my $inputobject=$mech->current_form()->find_input( undef, 'submit' );
 $m->click_button(input => $inputobject);
于 2012-07-13T16:15:44.907 回答