如何加载更多动态生成的网页 html 元素?

问题描述

我想从带有 python 和 selenium 的网页 (https://www.evaschulze-aufgabenpool.de/index.php/s/smwP6ygck2SXRtF?path=%2FKlasse12) 中获取一些数据,但我想要的内容是动态生成的,要查看所有内容,您必须在网页上向下滚动。更具体地说,我想获取网站上显示的所有文件名称,但它不起作用。我尝试使用 selenium 向下滚动整个网页似乎也不起作用,但我不知道我做错了什么,或者我还能做些什么来获取所有文件名称。所以我的问题是:如何确保我始终获得网站的所有动态生成文件夹。

这是我正在使用的代码

from time import sleep
from selenium import webdriver

url = "https://www.evaschulze-aufgabenpool.de/index.PHP/s/smwP6ygck2SXRtF?path=%2FKlasse12"

driver = webdriver.Chrome("chromedriver.exe")
driver.get(url)
driver.maximize_window()

sleep(3)
for i in range(5):
    driver.execute_script("window.scrollTo(0,1080)")
    sleep(3)

data = driver.find_element_by_tag_name("table")
data = data.find_elements_by_tag_name("tr")

for element in data:
    name = element.get_attribute("data-file")
    if name is not None:
        print(name)

driver.quit()

解决方法

Cześć,使用 NextCloud 提供的 API 列出您的文件和许多其他内容。这样你就会得到纯文本的答案。您可以在此处找到示例:Nextcloud list files using API

使用 Python requests 库代替 curl 工具,使用 HTTP GET 查询。