2

我正在尝试用 Perl 做一个简单的网络爬虫,但是很多网站都有加载的动态内容,例如,使用 javascript 函数:

$(document).ready(function() {
     $("#blabla").load('blublu/bla.php');
});

因此,我正在尝试调整我已经拥有的网络爬虫(获取 HTML 内容)以“等待”这些脚本加载,然后才获取整个(和完整的)网站内容 (HTML)。

到目前为止,我发现有人说这可以通过 WWW::Mechanize、Mechanize::Mozilla、WWW::Mechanize::Firefox 来实现。

问题是,我对 Perl 编程和模块实现不是很好,所以我想知道是否有好心人愿意在这里发布一个简单的示例或教程,展示我所要求的如何完成!

4

1 回答 1

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"]'});
于 2013-01-15T09:37:00.277 回答