如何使用Selenium和Python提取内容。

问题描述 投票:0回答:1

考虑到HTML。

Refere this

我想用Selenium选择左边的段落。我尝试了class_name和id,但得到了NoSuchElementException。为什么我得到这个错误?我的意思是,这些元素明明是存在的,为什么Selenium不能识别这些元素?方法我都试过了。

element = driver.find_element_by_xpath("//div[@id = 'mar-2019']//div[@class='report_data']").text

element = driver.find_element_by_id("mar-2019").text

element = driver.find_element_by_class_name("report_data").text

我到底哪里出错了?

python selenium xpath css-selectors webdriverwait
1个回答
0
投票

处理动态元素诱导 WebDriverWait()并等待 visibility_of_element_located()

element=WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.ID,"mar-2019"))).text

element=WebDriverWait(driver,10).until(EC.visibility_of_element_located((By.CSS_SELECTOR,"div#mar-2019"))).text

您需要导入以下库。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

0
投票

有多个子库 <p> 元素,在多个父客户中 <div> 元素的内容。要提取 <p> 元素的父级 <div id="mar-2019"> 你需要诱导的元素 WebDriverWait 对于 visibility_of_all_elements_located() 您可以使用以下任何一种方式 定位策略:

  • 使用 CSS_SELECTORget_attribute("innerHTML"):

    print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, ".data-row")))])
    
  • 使用 XPATH文字 属性。

    print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@id='mar-2019']//div[@class='report_data']//p")))])
    
  • : 你必须添加以下导入。

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

参考资料

你可以在以下网站找到一些相关的讨论 NoSuchElementException 中。

© www.soinside.com 2019 - 2024. All rights reserved.