Perl Mechanize follow_link失败了

时间:2012-08-11 02:51:40

标签: perl automation web-scraping mechanize

我正在尝试使用以下代码登录网站

my $mech = WWW::Mechanize->new(autosave=>1);
$mech->cookie_jar(HTTP::Cookies->new());
$mech->get($url);
$mech->follow_link( text => 'Sign In');
$mech->click();
$mech->field(UserName => "$username");
$mech->field(Password => "$password");
$mech->submit();

但是在follow_link期间,href包含两个前斜线,例如//test/sso-login)因此follow_link将其视为整个URL并且它失败如下所示

Error GETing http://test/sso-login: Can't connect to test:80 (Bad hostname)

我无法更改href,因为它是我的控制权。有没有办法克服这个问题,并使完整的URL附加此href。

1 个答案:

答案 0 :(得分:4)

不确定。您可以在致电follow_link()之前修改Mech正在查看的HTML:

my $html = $mech->content;
$html =~ s[//test/sso-login][http://example.com/test/sso-login]isg;
$mech->update_html( $html );

有关详细信息,请参阅documentation。在该页面上搜索“update_html”。