playwright 如何实现滚动到最底部
依赖安装
pip install loguru
pip install playwright
playwright install
代码示例
本文借助qq音乐,歌手页面。会存在滚动加载问题
from playwright.sync_api import sync_playwright
from loguru import logger
# 监听页面滚动事件
if __name__ == '__main__':
with sync_playwright() as playwright:
browser = playwright.chromium.launch(headless=False) # 启动Chromium浏览器,设置headless=False可以看到浏览器操作
page = browser.new_page() # 创建一个页面
page.goto("https://y.qq.com/n/ryqq/singer_list") # 打开网页
# 获取页面初始的滚动高度
scroll_height = page.evaluate("() => document.documentElement.scrollHeight")
scroll_position = page.evaluate("() => window.scrollY")
# 滚动到底部
while True:
# 向下滚动一定距离,这里以页面高度的2倍为例
page.evaluate("() => window.scrollTo(0, window.scrollY + window.innerHeight * 2)")
# 等待页面加载
page.wait_for_timeout(1000)
# 再次获取滚动高度和当前滚动位置
new_scroll_height = page.evaluate("() => document.documentElement.scrollHeight")
new_scroll_position = page.evaluate("() => window.scrollY")
# 如果滚动高度没有变化,或者当前滚动位置加上视口高度接近页面总高度,则认为已滚动到底部
if new_scroll_height == scroll_height or new_scroll_position + 100 >= new_scroll_height:
logger.info("已滚动到页面底部")
break
# 更新滚动高度和滚动位置
scroll_height = new_scroll_height
scroll_position = new_scroll_position
logger.info("结束")