尝试使用perl登录网站时出现问题

时间:2013-11-07 16:47:01

标签: perl mechanize

我是Perl的新手并试图访问网站。我尝试过在互联网上找到的代码:

use WWW::Mechanize;
use LWP;

my $username = 'user'; 
my $password = 'pass';

chomp($username);
chomp($pass);

my $mech = WWW::Mechanize->new();
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get('http://my_url.com');
$mech->form_name('theform');
$mech->field ('username' => $username);
$mech->field ('password' => $password);
$mech->click('Sign in');

print $mech->content();

按钮是:

<input type="submit" name="sgnBt" title="Sign in" value="Sign in" id="sgnBt" class="btn btn-prim sd-sgnBtn">

输出结果为:

Error : No clickable input with name Sign in ...

更换行$ mech - &gt;点击('登录');使用$mech -> submit();为我提供了注册页面,这不是我点击登录按钮后获得的页面。

我也尝试过:

$mech->click_button(name => 'Sign in');
$mech->click_button(name => 'sgnBt');
$mech->click_button(value => 'Sign in');

但他们都给出了同样的错误。请建议,用尽思路。我尝试了很多东西。

2 个答案:

答案 0 :(得分:1)

尝试使用$mech->submit_form()代替$mech->click_button()

my $fields = {
    username => $username,
    password => $pass
};
my $response = $mech->submit_form( with_fields => $fields );

这将选择页面上包含$fields中所有字段的第一个表单并提交页面。这样您就不必知道表单名称或编号或按钮名称。

您尚未发布表单的完整HTML,因此我不确定这是否相关,但您也应该知道WWW::Mechanize does not support JavaScript。这是一个常见的问题来源。

答案 1 :(得分:0)

我的问题是我不明白我需要先弄清楚表格名称。 表单名称是用html编写的,我试图解析。

修好后:

$mech->form_name('Right form name');

这条线对我有用:

$mech -> click('sgnBt');

感谢所有

相关问题