您可以使用 execute_script 方法来模拟滚动操作,将页面滚动到下一屏数据的位置,然后再进行截图。循环执行这个过程,直至页面所有数据都被截取到为止。下面是一个简单的示例代码:
from selenium import webdriver
wb = webdriver.Chrome()
wb.get('xxxxxxxxx')
# 获取页面总高度
js = "return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight, document.body.offsetHeight, document.documentElement.offsetHeight, document.body.clientHeight, document.documentElement.clientHeight);"
total_height = int(wb.execute_script(js))
# 设置截图尺寸
wb.set_window_size(1920, total_height)
# 设置初始滚动位置
scroll_height = 0
while scroll_height < total_height:
# 模拟滚动操作
wb.execute_script(f"window.scrollTo(0, {scroll_height});")
# 等待页面加载
time.sleep(1)
# 截图
wb.save_screenshot(f"screenshot_{scroll_height}.png")
# 更新滚动位置
scroll_height += 1080 # 每次滚动 1080 像素高度
wb.quit()
在这个示例中,我首先使用 JavaScript 获取页面的总高度,然后设置窗口大小为全高度。接着,我们循环执行滚动操作,每次滚动一屏高度(这里设置为 1080 像素),然后等待页面加载完成后截图。最后更新滚动位置,直到滚动到页面底部,所有数据都被截取到。注意,为了避免页面未加载完成就截图,我们在每次滚动后等待 1 秒钟,以确保页面加载完成。