2

Perlで単純なWebクローラーを実行しようとしていますが、多くのWebサイトには、たとえばjavascript関数を使用してロードされる動的コンテンツがあります。

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

そのため、私はすでに持っている(HTMLコンテンツをフェッチする)Webクローラーを、それらのスクリプトがロードされるのを「待機」してから、Webサイトコンテンツ(および完全な)全体(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 に答える