0

我有一个应用程序正在抓取网站数据。它在 iFrame 中抓取网站。我需要从同一个 iframe 抓取到后续网站,这两个网站都有一个入口地址,该入口地址指向一个带有字段和按钮的页面。在该页面上,我在字段中输入一个数字,然后按下按钮转到下一页。我遇到的问题是,当我(编码)按下按钮时,它不会等待页面加载并在有任何东西之前刮掉。

setTimeOut并且Delay似乎被完全忽略了。

$(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 回答