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

标签 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 -> 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/

相关文章:

perl - Perl 中的这个语句有什么问题?

ruby - 如何使用 Mechanize 从列表项中获取文本?

python - WIPO 搜索缺少表格数据 POST 消息

bash - 使用 bash 的 Perl 反引号

perl - 如何在 Perl 中操作 Sybase 日期时间字符串?

regex - Perl 中的引用元?如何解决错误: "Nested quantifiers in regex; marked by <-- HERE"

javascript - 使用 Python mechanize 使用 javascript 处理特定表单

nokogiri - 找不到结果时屏幕抓取?

perl - 如何使用 WWW::Mechanize 提交 HTML 中没有的表单?

perl - cpanm -L 坏了?