我正在使用 selenium + python报废一个页面,其中有无限滚动(基本上滚动到最大前500个结果显示)
使用下面的代码,我能够滚动到页面的底部。现在我想停止时,进一步滚动不获取任何内容。(说,页面只有200个结果,我不想继续滚动假设最大500个结果)
driver = webdriver.Firefox()
driver.get(url)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
我尝试访问window.pageYOffset
,但总是显示为None。
4条答案
按热度按时间8wtpewkr1#
我在Chrome上使用Selenium,而不是Firefox,但以下功能对我有效:
1.在向下滚动之前捕获页面高度;
1.使用向下键向下滚动;
1.在向下滚动之后捕获页面高度;
1.如果滚动前后页面高度相同,则停止滚动
我的代码如下所示:
w6mmgewl2#
为了以防万一,如果有人正在使用
playwright
。这个代码片段与ATJ的答案非常相似。uajslkp63#
我们可以在滚动时使用硬计数器,一旦达到最大计数,我们就退出循环。
// js.执行脚本(“javascript:窗口.滚动(50,180)”);//线程休眠(1000);// js.执行脚本(“javascript:窗口.滚动(50,150)”);//缺少按钮
pgccezyw4#
您可以在每次滚动尝试之前和之后检查document.body.scrollTop,如果没有要提取的数据,则此值将保持不变