selenium判断页面是否到底
实现该功能,首先你最好先最大化网页,可以使用`driver.maximize_window()`进行该操作。```python
from selenium import webdriver
import time
driver = webdriver.Chrome()
# url = "https://www.xiaohongshu.com/user/profile/6520e7d10000000024017cfc"
url = "https://www.xiaohongshu.com/user/profile/6262794f000000002102a1e4"
# 访问某个网页
driver.get(url)# 使用驱动实例打开指定的网页
driver.maximize_window()
temp_height = 0
while True:
# 循环将滚动条下拉
driver.execute_script("window.scrollBy(0,600)")
# sleep一下让滚动条反应一下
time.sleep(1)
# 获取当前滚动条距离顶部的距离
check_height = driver.execute_script(
"return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")
# 如果两者相等说明到底了
if check_height == temp_height:
print("到底了")
break
temp_height = check_height
print(check_height)
# 等待20秒
time.sleep(20)
# 清理资源
driver.quit()# 关闭浏览器驱动实例,释放资源
```
这段代码是使用 Selenium WebDriver 来自动模拟网页滚动的过程,并且在滚动到页面底部时停止。下面是对代码的逐行解释:
1. `driver.get(url)`: 使用 Selenium WebDriver 实例(`driver`)打开指定的网页(`url`)。
2. `driver.maximize_window()`: 将浏览器窗口最大化,以确保能够显示整个页面内容。
3. `temp_height = 0`: 初始化一个变量 `temp_height`,用于保存上一次滚动条的位置。
4. `while True:`: 开启一个无限循环,直到满足条件跳出循环。
5. `driver.execute_script("window.scrollBy(0,600)")`: 使用 JavaScript 在当前窗口向下滚动600个像素。这一步实现了向下滚动页面的操作。
6. `time.sleep(1)`: 通过 `time.sleep()` 函数等待1秒,让页面滚动后有时间加载新的内容。这可以确保页面滚动的平稳性。
7. `check_height = driver.execute_script("return document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;")`: 使用 JavaScript 获取当前滚动条距离页面顶部的距离,并将其保存在 `check_height` 变量中。这个表达式兼容了不同浏览器的获取方式。
8. `if check_height == temp_height:`: 检查当前滚动条的位置与上一次滚动条位置是否相等,如果相等,说明页面已经滚动到底部了。
11. `temp_height = check_height`: 将当前滚动条的位置更新到 `temp_height` 变量中,以备下一次循环使用。
12. `print(check_height)`: 打印当前滚动条距离页面顶部的距离,用于调试和观察滚动过程中的位置变化。
通过这段代码,你可以模拟用户在浏览器中向下滚动页面的操作,并且在滚动到页面底部时停止。
这里的话,你可以直接使用我这的代码,去试试你那个网页是否能成功。 本帖最后由 asqwe1 于 2024-4-19 10:07 编辑
提供一种方法:
body = drive.find_element(By.CSS_SELECTOR, "body")
body.send_keys(Keys.END)
判断body.text跟上一次加载的是否一样,内容是否有改变。 感谢分享,论坛因你而精彩! 感谢分享,学习了 这代码很好,很用处。我以前滚动网页,到底了,还不能停下来,太费时间了。学习了。 感谢楼主分享,收藏了,谢谢 感谢分享,正好用到。 asqwe1 发表于 2024-4-19 10:03
提供一种方法:
body = drive.find_element(By.CSS_SELECTOR, "body")
body.send_keys(Keys.END)
都是大神! 感谢分享 asqwe1 发表于 2024-4-19 10:03
提供一种方法:
body = drive.find_element(By.CSS_SELECTOR, "body")
body.send_keys(Keys.END)
用body去判断是否在最底下吗
页:
[1]
2