Perl WWW ::机械化和cookie

时间:2014-01-03 13:48:13

标签: perl cookies mechanize

WWW :: Mechanize遇到了一些问题。

我正在尝试加载的页面包含等待30秒的Javascript,然后解析我需要点击的按钮(以确认我已同意网站条款:))

我已经理解,而且Mechanize不能与JS一起使用,所以我需要使用cookie来获取此页面,当我按下此按钮时,该网站会放入我的浏览器。

这些饼干是这样的:约定=> 1,lastvisit => 1388753990,lastseen => 0

如何在“船上”获得带有这些cookie的所需页面?

代码:

my $cookie_jar = HTTP::Cookies->new;
my $agent      = WWW::Mechanize->new( cookie_jar => $cookie_jar );

$cookie_jar->set_cookie("agreed"=>1,"lastseen"=>0,"lastvisit"=>1388753990);

$agent->get( 'http://www.example.com' );

print $agent->content();

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

如果您想要真正的机械化移动到WWW-Mechanize-Firefox 然后你就会得到真正有效的JS环境:

use WWW::Mechanize::Firefox;
my $mech = WWW::Mechanize::Firefox->new();
$mech->get('http://ursite.com');

# The submit button is generated after the page has loaded

my $retries = 10;
while ($retries-- and ! $mech->is_visible( xpath => '//*[@id="submit"]' )) {
      sleep 1;
};
die "Timeout" if 0 > $retries;

# Now the element exists
$mech->click({xpath => '//*[@id="submit"]'});