我想抓取无限滚动实现的页面的所有数据。以下python代码有效。
for i in range(100):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(5)
这意味着每次我向下滚动到底部时,我都需要等待 5 秒,这通常足以让页面完成加载新生成的内容。但是,这可能没有时间效率。页面可能会在 5 秒内完成加载新内容。每次向下滚动时,如何检测页面是否完成加载新内容?如果我能检测到这一点,我可以在知道页面完成加载后再次向下滚动以查看更多内容。这样更省时。
原文由 apogne 发布,翻译遵循 CC BY-SA 4.0 许可协议
webdriver
将默认通过.get()
方法等待页面加载。正如@user227215 所说,您可能正在寻找一些特定元素,您应该使用
WebDriverWait
等待页面中的元素:我用它来检查警报。您可以使用任何其他类型的方法来查找定位器。
编辑1:
我应该提到
webdriver
默认会等待页面加载。它不等待加载内部框架或 ajax 请求。这意味着当您使用.get('url')
时,您的浏览器将等待页面完全加载,然后转到代码中的下一个命令。但是当您发布 ajax 请求时,webdriver
不会等待,您有责任等待适当的时间来加载页面或页面的一部分;所以有一个名为expected_conditions
的模块。