【问题标题】:Python Selenium - dynamically generated data not added to DOMPython Selenium - 动态生成的数据未添加到 DOM
【发布时间】:2016-06-06 21:07:38
【问题描述】:

我正在使用 python selenium

我正在运行这个简单的代码

driver = webdriver.PhantomJS()
#Also use driver = webdriver.Chrome()
driver.get("my_url")
driver.find_element_by_xpath("//*[@id='lb_LoadMore_button_text_2']").click()
print [x.text for x in driver.find_elements_by_xpath("//font[@class='ProductTitle']")]

我点击的按钮是“加载更多”按钮。在 Chrome 网络驱动程序上,我看到项目正在加载,但在点击提交后我不知道如何访问它们。

在尝试打印元素之前,我也尝试过 driver.refresh()

诚然,我对硒很陌生,但还没有找到解决方案。

【问题讨论】:

    标签: python selenium selenium-webdriver web-scraping


    【解决方案1】:

    点击后您可能只需要延迟,但我们不仅要添加 time.sleep() 调用,还要添加 explicitly wait 以通过 presence_of_all_elements_located() 显示产品标题:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    driver.find_element_by_xpath("//*[@id='lb_LoadMore_button_text_2']").click()
    
    # waiting
    wait = WebDriverWait(driver, 10)
    product_titles = wait.until(EC.presence_of_all_elements_located((By.XPATH, "//font[@class='ProductTitle']")))
    
    print [x.text for x in product_titles]
    

    【讨论】:

    • 谢谢你的作品。我试过 time.sleep 但它睡得不够长。 wait.until 更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    • 2021-04-27
    相关资源
    最近更新 更多