我正在尝试使用 Nightmare 抓取网页,但希望等待#someelem
出现,前提是它确实存在。否则,我希望 Nightmare 继续前进。如何做到这一点.wait()
?
我不能用.wait(ms)
。Using.wait(selector)
意味着 Nightmare 会一直等待直到元素出现,但是如果页面永远不会有这个元素,Nightmare 会一直等待。
最后一个选项是使用.wait(fn)
. 我已经尝试过这样的事情
.wait(function(cheerio) {
var $ = cheerio.load(document.body.outerHTML);
var attempt = 0;
function doEval() {
if ( $('#elem').length > 0 ) {
return true;
}
else {
attempt++;
if ( attempt < 10 ) {
setTimeout(doEval,2000); //This seems iffy.
}
else {
return true;
}
}
}
return doEval();
},cheerio)
因此,等待并再次尝试(达到阈值),如果未找到该元素,则继续前进。setTimeout 周围的代码似乎是错误的,因为.wait
是在浏览器范围内完成的。
提前致谢!