我正在使用WWW :: Mechanize :: Firefox来抓取在加载后加载一些JavaScript的页面 关于这个问题的代码:
my ($firemech) = WWW::Mechanize::Firefox->new(tab => 'current', );
$firemech->get($url);
die "Cannot connect to $url\n" if !$firemech->success();
print "I'm connected!\n";
my ($retries) = 10;
while ($retries-- and ! $firemech->is_visible( xpath => '//*[@class="areaMapC"]' )) {
sleep 1;
}
die "Timeout" unless $retries;
my ($content) = $firemech->content();
第一页的一切都很顺利,它会加载页面并识别稍后加载的类。然后,它正确地更改为第二页(我看到Firefox更改它),但它永远不会到达“我已连接!”打印。
我检查了URL并且想要的类在那里,两个页面的代码相同(除了我要提取的一些ID)。我真的不知道出了什么问题。
此类网页为HERE。
答案 0 :(得分:3)
我通过简单地使用
解决了这个问题my ($firemech) = WWW::Mechanize::Firefox->new();
而不是我以前用过的东西。它仍然将内容保存在一个选项卡中,以便完全满足我的需求。