我有一个正在抓取网站数据的应用程序。它正在iFrame中抓取网站。我需要从同一个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();
});
});
我如何正确地获得这些时间?
答案 0 :(得分: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');
答案 1 :(得分:0)
这将在加载iFrame时执行内部代码。
$("iframe").ready(function() {
//iFrame loaded
scrapeFunction();
});