我正在尝试使用 Python 和 Playwright 自动抓取具有“无限滚动”功能的网站。
问题是,到目前为止,Playwright 还不包含滚动功能,更不用说无限自动滚动功能了。
根据我在网上发现的内容和我的个人测试,我可以使用该page.evaluate()函数和一些 Javascript 代码自动执行无限或有限滚动。
例如,这有效:
for i in range(20):
page.evaluate('var div = document.getElementsByClassName("comment-container")[0];div.scrollTop = div.scrollHeight')
page.wait_for_timeout(500)
Run Code Online (Sandbox Code Playgroud)
这种方法的问题在于,它要么通过指定滚动数量,要么通过告诉它永远循环下去来工作while True。
我需要找到一种方法来告诉它继续滚动,直到加载最终内容。
这是我目前正在尝试的 Javascript page.evaluate():
var intervalID = setInterval(function() {
var scrollingElement = (document.scrollingElement || document.body);
scrollingElement.scrollTop = scrollingElement.scrollHeight;
console.log('fail')
}, 1000);
var anotherID = setInterval(function() {
if ((window.innerHeight + window.scrollY) >= document.body.offsetHeight) {
clearInterval(intervalID);
}}, 1000)
Run Code Online (Sandbox Code Playgroud)
这在我的 Firefox 浏览器或 Playwright 的 Firefox 浏览器中都不起作用。它立即返回并且不会间隔执行代码。
如果有人能告诉我如何使用 Playwright 创建一个自动滚动功能,该功能将在到达动态加载网页的底部时检测并停止,我将不胜感激。