[英]Scrape a page with infinite scroll
我试图在电子商务网站上获取所有产品,该网站使用无限滚动来加载产品,我找到了一个滚动到页面底部的解决方案,但是,它似乎没有端点,并且它甚至在到达页面底部后仍在继续,所以我想知道如何知道页面是否已经结束,以便我可以设置条件并停止清除间隔的功能,非常感谢任何帮助。 我正在粘贴我当前的解决方案,该解决方案向下滚动到页面末尾,但之后从未停止。
(function() {
var lastScrollHeight = 0, count = 0;
function autoScroll() {
count++;
console.log(count);
var sh = document.documentElement.scrollHeight;
if (sh !== lastScrollHeight) {
console.log(sh, lastScrollHeight);
lastScrollHeight = sh;
document.documentElement.scrollTop = sh;
}
}
var myInterval = window.setInterval(autoScroll, 100);
}())
看起来好像您正在检查页面是否确实滚动,但从未取消window.setInterval()
这样的东西应该可以工作:(未测试)
(function() {
var lastScrollHeight = 0, count = 0, myInterval = null, failCount = 0;
function autoScroll() {
count++;
console.log(count);
var sh = document.documentElement.scrollHeight;
if (sh !== lastScrollHeight) {
console.log(sh, lastScrollHeight);
lastScrollHeight = sh;
document.documentElement.scrollTop = sh;
failCount = 0; // reset the number of failures
}
else {
failCount++; // record that we failed
if(failCount >= 10) // if we have failed 10 times in a row then exit
window.clearInterval(myInterval);
}
}
myInterval = window.setInterval(autoScroll, 100);
}())
编辑:更新为允许 10 个循环,在退出间隔之前不发生滚动。
这几乎可以完美满足我的需求。 当选项卡不是焦点选项卡时(AKA继续在后台滚动),是否有办法使它继续工作?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.