点此免费加入Python网络爬虫学习交流QQ群:428518750
有些页面的内容不是打开页面时直接加载的,需要我们滚动页面,直到页面的位置显示在屏幕上时,才会去请求服务器,加载相关的内容。所以,有时候我们就需要模拟页面向下滚动的操作。
使用JS语句模拟向下滚动页面
可以使用JS语句,定位滚动条的位置到最下面,从而实现页面的向下滚动。
语法如下:
page.evaluate("var q=document.documentElement.scrollTop=滚动条的位置")
代码示例:
from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://sql.wang/playwright/screenshot/") page.evaluate("var q=document.documentElement.scrollTop=50000") page.mouse.wheel(0,7000) page.wait_for_timeout(20000) page.close() context.close() browser.close() with sync_playwright() as playwright: run(playwright)
ps. 使用JS语句滚动页面的方法,从效果上来看,是一下子跳到指定位置的。如果从页头到指定位置中间还有很多内容需要懒加载,不知道会不会触发页面的加载。
另外,上面的语句虽然可以实现向下滚动到页面底部(通过向下滚动一个超大长度实现),但无法实现精确向下滚动到页面底部。使用下面的JS语句,可以实现精确滚动到底部:
page.evaluate("() => window.scrollTo(0,document.body.scrollHeight)")
使用滚动鼠标的方式模拟向下滚动页面
在浏览器页面上,我们也可以使用滚动鼠标命令,模拟向下滚动页面。
语法如下:
page.mouse.wheel(向右滚动长度,向下滚动长度)
代码示例:
from playwright.sync_api import Playwright, sync_playwright, expect def run(playwright: Playwright) -> None: browser = playwright.chromium.launch(headless=False) context = browser.new_context() page = context.new_page() page.goto("https://sql.wang/playwright/screenshot/") page.mouse.wheel(0,7000) page.wait_for_timeout(20000) page.close() context.close() browser.close() with sync_playwright() as playwright: run(playwright)
本站所有内容均为原创,本站保留所有权利。仅允许非商业用途的转载,但必须注明来源网站、作者、来源链接!否则,由此造成的一切后果,由转载方承担!