我是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');
但他们都给出了同样的错误。请建议,用尽思路。我尝试了很多东西。
答案 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');
感谢所有