代码之家  ›  专栏  ›  技术社区  ›  Chance Jennings

在编写下面的代码时,我得到了一个空列表——我本希望返回一个列表

  •  0
  • Chance Jennings  · 技术社区  · 1 年前

    这是我使用Selenium提取数据时使用的代码——我确实在网站上的html中看到了xpath,所以我确实看到了提取元素以在for循环中创建列表所需的路径

    enter image description here

    我希望有一个列表,运行时代码没有错误。

    1 回复  |  直到 1 年前
        1
  •  0
  •   Yaroslavm Mesut Dönmez    1 年前

    您遇到的问题可能与网站渲染有关。

    您不需要等待容器元素的存在,所以它可以循环通过空列表。

    要等待渲染,可以使用 presence_of_all_elements_located 具有 WebDriverWait

    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    from selenium import webdriver
    
    from selenium.webdriver.support.wait import WebDriverWait
    
    driver = webdriver.Chrome()
    wait = WebDriverWait(driver, 20)
    driver.get("https://audible.com/search")
    
    data_containers = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, '[data-widget*=product] .productListItem')))
    
    for container in data_containers:
        title = container.find_element(By.CLASS_NAME, 'bc-heading').get_property('innerText')
        author = container.find_element(By.CLASS_NAME, 'authorLabel').get_property('innerText')
        duration = container.find_element(By.CLASS_NAME, 'runtimeLabel').get_property('innerText')
        # and append them to your dictionary
    
    推荐文章