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

fnatzsnv  于 2023-10-14  发布在  Go
关注(0)|答案(1)|浏览(109)

下面是我使用Selenium提取数据的代码--我确实看到了位于网站上的html中的xpath,所以我确实看到了提取元素以在for循环中创建列表所需的路径
enter image description here
我期待一个列表,运行时代码没有错误。

ifsvaxew

ifsvaxew1#

您遇到的问题可能与网站渲染有关。
你不需要等待容器元素存在,所以它可以在空列表中循环。
要等待渲染,您可以将presence_of_all_elements_locatedWebDriverWait一起使用。

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

相关问题