【发布时间】:2020-05-06 10:53:41
【问题描述】:
我目前正在尝试在 Python 上使用 Selenium 抓取 DropBox 文件夹。显然,如果我尝试选择所有超链接(或所有包含超链接的元素),我只会得到前 20 个左右的结果。举一个最小的工作示例:
from selenium import webdriver
browser = webdriver.Chrome()
page = www.dropbox.com/FolderName
browser.get(page)
elementlist = browser.find_elements_by_class_name('brws-file-name-cell-filename')
#or alternatively, you can simply use the 'by_tag_name('a') method, which yields similar results)
elength = len(elementlist)
通常,elength 大约有 20 到 30 个元素,它会增长到 30 到 40 我添加一个向下滚动到页面底部的命令。我知道我要抓取的文件夹中有超过 200 个元素。因此,我的问题是:有没有办法渐进向下滚动页面,而不是立即一直到底部?我看到很多关于同一主题的问题都集中在无限加载的页面上,比如 Facebook 或其他社交媒体。另一方面,我的页面具有固定长度。有没有办法可以逐步向下滚动,而不是一次全部滚动?
更新
我尝试遵循社区给我的建议,您可以通过答案找到here。不幸的是,我仍在努力迭代高度,这是我感兴趣的变量,它似乎被困在一个字符串中。这是我在高度上创建 for 循环的最佳尝试,不用说,它仍然没有工作。
# Get current height
height = browser.execute_script("return document.body.scrollHeight")
while True:
# Scroll down
browser.execute_script('window.scrollTo(0, window.scroll'+str(height)+' + 200)')
# Wait to load page
time.sleep(SCROLL_PAUSE_TIME)
# Calculate new scroll height and compare with last scroll height
new_height = browser.execute_script("return document.body.scrollHeight")
if new_height == height:
break
else:
height = new_height
更新 2
我想我找到了问题所在。 Dropbox 基本上有一个“页面中的页面”结构。我可以看到整个页面,但是我需要导航一个内部存档。知道该怎么做吗?
【问题讨论】:
-
我刚刚尝试使用该线程中向我推荐的方法。它似乎不起作用,一种或另一种方式。即使使用 window.scrollY 命令也不行。