0

Web サイトのデータをスクレイピングするアプリケーションがあります。iFrame で Web サイトをスクレイピングしています。フィールドとボタンのあるページにつながるエントリアドレスを持つ同じ iframe から、後続の Web サイトにスクレイピングする必要があります。そのページで、フィールドに数字を入力し、ボタンを押して次のページに移動します。私が抱えている問題は、ボタンを (コード化して) 押すと、ページが読み込まれるのを待たず、そこに何かがある前にスクレイピングすることです。

setTimeOutDelay完全に無視されているようです。

$(document).ready(function() {

  $('#startbutton').click(function() {
    $('#iframe').attr('src', 'www.pageone.com');
    // Here I start a load because I need to wait for the button to become available.
    $('#iframe').one('load', function() {
      $('#okbutton').click();
    });
    // This is where it goes wrong. I would assume that it waits for the second page 
    // to load. But it doesn't. Adding another load block didn't help.
    scrapeFunction();
  });

});

これらのタイミングを正しくするにはどうすればよいですか?

4

2 に答える 2

1

私が(コード化された)ボタンを押すと、ページがロードされるのを待たず、そこに何かがある前にスクレイピングします

実際には、ボタンが押されるのを待ちません。代わりに、別のロード イベントを待機します。

var $if = $('#iframe');
// (1) assign a load handler
$if.one('load', function() { // that says "When loaded (first), … 
    // (3) assign the next load handler
    $if.one('load', function() { 
        // (5) which then (second load) can scrape the content
        scrapefunction();
    });
    // (4) and load it
    $('#okbutton').click();
}); // …"
// (2) and load it
$('#iframe').attr('src', 'www.pageone.com');
于 2013-03-21T11:22:40.830 に答える
0

これにより、iFrame が読み込まれたときに内部のコードが実行されます。

$("iframe").ready(function() {
    //iFrame loaded
    scrapeFunction();
});​
于 2013-03-20T16:53:27.467 に答える