用无限滚动刮一页

问题描述 投票:-2回答:1

我试图在电子商务网站上获取所有产品,使用无限滚动来加载产品,我找到了一个滚动到页面底部的解决方案,但是,它似乎没有端点,并且它甚至在它到达页面底部后仍然继续,所以我想知道如何知道页面是否已经结束所以我可以设置一个条件并停止清除间隔的功能,非常感谢任何帮助。我正在粘贴我当前的解决方案,该解决方案向下滚动到页面的末尾,但之后永远不会停止。

(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);
}())
javascript web-scraping scroll infinite-scroll
1个回答
0
投票

看起来好像你正在检查页面是否实际滚动,但永远不会取消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个循环。

© www.soinside.com 2019 - 2024. All rights reserved.