我正在尝试使用Perl做一个简单的webcrawler,但很多网站都有动态内容加载,例如,使用javascript函数:
$(document).ready(function() {
$("#blabla").load('blublu/bla.php');
});
所以我正在尝试调整我已经拥有的(用于获取HTML内容)的webcrawler来“等待”加载这些脚本,然后才获取整个(和完整的)网站内容(HTML)。
到目前为止,我发现有人说这可以通过WWW :: Mechanize,Mechanize :: Mozilla,WWW :: Mechanize :: Firefox来实现。
问题是,我对Perl编程和模块实现不是很了解,所以我想知道是否有任何一个灵魂想在这里发布一个简单的例子或教程,展示我的问题是怎么做的! / p>
答案 0 :(得分:2)
使用www :: mechanize :: firefox,您必须从Firefox的“插件商店”安装和配置mozrepl插件。
对于起点,您可以使用几个示例程序作为起点:http://search.cpan.org/dist/WWW-Mechanize-Firefox/lib/WWW/Mechanize/Firefox/Examples.pm
此页面包含如何等待特定HTML元素的示例:http://search.cpan.org/dist/WWW-Mechanize-Firefox/lib/WWW/Mechanize/Firefox/Cookbook.pod#Wait_until_an_element_appears
可以轻松定制:
# It will be wait 10 seconds for blabla, then timeout
my $retries = 10;
while ($retries-- and ! $mech->is_visible( xpath => '//*[@id="blabla"]' )) {
sleep 1;
};
die "Timeout" if 0 > $retries;
# Now the element exists
$mech->click({xpath => '//*[@id="submit"]'});