小编ale*_*its的帖子

剧作家自动滚动到无限滚动页面的底部

我正在尝试使用 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 创建一个自动滚动功能,该功能将在到达动态加载网页的底部时检测并停止,我将不胜感激。

javascript python python-3.x playwright

16
推荐指数
3
解决办法
4万
查看次数

标签 统计

javascript ×1

playwright ×1

python ×1

python-3.x ×1