我是 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 -> click('Sign in');与
$mech -> submit();
给了我注册页面,这不是我点击登录按钮后得到的页面。我也试过:
$mech->click_button(name => 'Sign in');
$mech->click_button(name => 'sgnBt');
$mech->click_button(value => 'Sign in');
但他们都给出了同样的错误。请指教,用完的想法。我已经尝试了很多东西。
最佳答案
尝试使用 $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 .这是一个常见的问题来源。
关于perl - 尝试使用 perl 登录网站时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19841739/