正如标题所说,我正在尝试使用PhantomJS向下滚动网页。这就是我所拥有的:
var i = 0;
page.open(address, function () {
window.setInterval(function() {
i++;
if(i<5) {
page.evaluate(function() {
window.document.body.scrollTop = document.body.scrollHeight;
});
}
else { // Timeout
fs.write(dir, page.content, 'w');
phantom.exit();
}
}, 1000); // Number of milliseconds to wait between scrolls
});
此代码有效,并在5秒后使用滚动在文件中写入网页内容,因此取决于网页的使用时间,下载所有内容或仅下载一半,季度......
好吧,我的问题是编写页面结尾的条件。我试图在if (window.document.body.scrollTop = document.body.scrollHeight)
内进行page.evaluate
,但它不起作用。我也尝试比较迭代之间的内容,我认为这有效,但它不是一个好的解决方案:
window.setInterval(function() {
a = page.content;
if (a == b) {
console.log('END');
} else {
console.log('NO END');
}
...
fs.write(dir, page.content, 'w');
phantom.exit();
}
b = page.content;
a = b;
}, 1000); // Number of milliseconds to wait between scrolls
我在这个问题上很讨厌,所以我很感激一些建议。有什么想法吗?