【问题标题】:Selecting text element having specific style color选择具有特定样式颜色的文本元素
【发布时间】:2021-01-21 18:48:49
【问题描述】:

我有一个抓取任务要做,我必须收集一些文章。我知道我只需要一些红色的段落 (#FF0000)。有没有办法使用 Selenium WebDriver 仅提取以这种颜色着色的那些?在我必须抓取的所有页面中,唯一始终相同的属性是文本颜色。

例如,在以下 URL 中:https://www.boatos.org/saude/ivermectina-mata-covid-dois-dias-dose-unica.html

我希望 webdriver 只返回以下最初用红色绘制的段落:

版本 1:“IVRMECTINA REALMENTE MATA COVID-19 EM 2 DIAS COMPROVA ESTUDO”。版本 2:“Cientistas descobriram que dose única de ivermectina pode remover todo o RNA do novo coronavírus em um período de 48 horas。 Mesmo no primeiro dia, a redução do material genético do vírus é significativo”。

【问题讨论】:

  • //span[@style='color: #ff0000;'] 将是一个简单的 xpath。

标签: python selenium-webdriver xpath css-selectors webdriverwait


【解决方案1】:

要打印文本Versão 1:“IVRMECTINA REALMENTE MATA COVID-19 EM...,您可以使用以下任一Locator Strategies

  • 使用css_selectortext属性:

    driver.get("https://www.boatos.org/saude/ivermectina-mata-covid-dois-dias-dose-unica.html")
    print(driver.find_element_by_css_selector("span[style] > em").text)
    
  • 使用xpathget_attribute("innerHTML")

    driver.get("https://www.boatos.org/saude/ivermectina-mata-covid-dois-dias-dose-unica.html")
    print(driver.find_element_by_xpath("//span[@style]/em").get_attribute("innerHTML"))
    

理想情况下,您需要为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

  • 使用CSS_SELECTORget_attribute()

    driver.get("https://www.boatos.org/saude/ivermectina-mata-covid-dois-dias-dose-unica.html")
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "span[style] > em"))).get_attribute("innerHTML"))
    
  • 使用XPATHtext属性:

    driver.get("https://www.boatos.org/saude/ivermectina-mata-covid-dois-dias-dose-unica.html")
    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//span[@style]/em"))).text)
    
  • 控制台输出:

    Versão 1: “IVERMECTINA REALMENTE MATA COVID-19 EM 2 DIAS COMPROVA ESTUDO”. Versão 2: “Cientistas descobriram que dose única de ivermectina pode remover todo o RNA do novo coronavírus em um período de 48 horas. Mesmo no primeiro dia, a redução do material genético do vírus é significativo”.
    
  • 注意:您必须添加以下导入:

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

您可以在How to retrieve the text of a WebElement using Selenium - Python找到相关讨论


参考文献

链接到有用的文档:

【讨论】:

    猜你喜欢
    • 2013-05-27
    • 2013-10-14
    • 2015-02-09
    • 2011-03-16
    • 2021-05-04
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    相关资源
    最近更新 更多