gpt4 book ai didi

python - 如何使用 selenium python 缓慢向下滚动网页?

转载 作者:行者123 更新时间:2023-12-04 13:24:17 25 4
gpt4 key购买 nike

我想使用 Selenium 向下滚动网页。找到这个:How can I scroll a web page using selenium webdriver in python?
将此代码如下所示:

SCROLL_PAUSE_TIME = 0.5

# Get scroll height
last_height = driver.execute_script("return document.body.scrollHeight")

while True:
# Scroll down to bottom
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)

# Calculate new scroll height and compare with last scroll height
new_height = driver.execute_script("return document.body.scrollHeight")
if new_height == last_height:
break
last_height = new_height
它工作正常。但是由于上面的代码,我在我的主代码中发现了一些问题。我想解析推特。如果推特账号很长,网页的html代码中就会有一些twits。并非此帐户的所有推文。
示例:我向下滚动网页,并且在网页的 html 代码中仅包含对我可见的那些推文(我可以看到)。由于这件事,我无法捕捉到所有的推特。上面的这段代码可以快速滚动页面。如何减慢滚动速度?
我试图解决它并编写了愚蠢的代码:
    last_height = driver.execute_script("return document.body.scrollHeight")
print(last_height)

# Scroll down to bottom
y = 600
finished = False
while True:
for timer in range(0, 100):
driver.execute_script("window.scrollTo(0, " + str(y) + ")")
y += 600
sleep(1)
new_height = driver.execute_script("return document.body.scrollHeight")
print(new_height, last_height)

if new_height == last_height: #on the first iteration new_height equals last_height
print('stop')
finished = True
break
last_height = new_height
if finished:
break
此代码不起作用。在第一次迭代时 new_height 等于 last_height 请帮助我。如果你能修复我的代码,修复它。如果您可以编写另一个优雅的解决方案,请写下来。
更新:
这个滚动必须是无限的。例如:我向下滚动 facebook 帐户,直到我完全滚动它。这就是为什么我有 last_height 和 new_height 变量。在我的代码中,当 last_height 等于 new_height 时,这意味着页面已滚动到最后,我们可以停止滚动它(我们可以退出)。但我错过了一些东西。我的代码不起作用。

最佳答案

我曾在 Twitter 机器人上工作,当您向下滚动时,它会更新页面的 HTML 并从上面删除一些推文。我使用的算法是:

  • 为推文 URL 创建一个空列表。
  • 收集可用的推文,然后为每条推文检查其 URL 是否在列表中,如果没有,则添加它并对推文的内容执行您想要的处理,否则忽略该推文。
  • 获取页面高度current_height = DriverWrapper.cd.execute_script("return document.body.scrollHeight")
  • 向下滚动页面,如果 new_height == current_height否则从第二步开始重复..
  • 关于python - 如何使用 selenium python 缓慢向下滚动网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69507198/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com