gpt4 book ai didi

python - 在 Python 中使用 selenium 从
  • 项中提取文本
  • 转载 作者:太空宇宙 更新时间:2023-11-03 20:25:18 25 4
    gpt4 key购买 nike

    我正在尝试获取嵌套 ul-li 结构中/a 标记内的文本。我找到了所有“li”,但无法获取 a 中的文本。

    我正在使用 Python 3.7 和 Selenium webdriver 以及 Firefox 驱动程序。

    对应的HTML是:

    [some HTML]

    <ul class="dropdown-menu inner">
    <!---->
    <li nya-bs-option="curso in ctrl.cursos group by curso.grupo" class="nya-bs-option first-in-group group-item">
    <span class="dropdown-header">Cursos em Destaque</span>
    <a tabindex="0">Important TEXT 1</a>
    </li>
    <!-- end nyaBsOption: curso in ctrl.cursos group by curso.grupo -->
    <li nya-bs-option="curso in ctrl.cursos group by curso.grupo" class="nya-bs-option group-item">
    <span class="dropdown-header">Cursos em Destaque</span>
    <a tabindex="0">Important TEXT 2</a>
    </li>
    <!-- end nyaBsOption: curso in ctrl.cursos group by curso.grupo -->
    <li nya-bs-option="curso in ctrl.cursos group by curso.grupo" class="nya-bs-option group-item">
    <span class="dropdown-header">Cursos em Destaque</span>
    <a tabindex="0">Important TEXT 3</a>
    </li>
    <!-- end nyaBsOption: curso in ctrl.cursos group by curso.grupo -->
    <li nya-bs-option="curso in ctrl.cursos group by curso.grupo" class="nya-bs-option group-item">
    <span class="dropdown-header">Cursos em Destaque</span>
    <a tabindex="0">Important TEXT4</a>
    </li>
    [another 100 <li></li> similar blocks] .
    .
    <li class="no-search-result" placeholder="Curso">
    <span>Unimportant TEXT</span>
    </li>
    </ul>

    [more HTML]

    我尝试过以下代码:

    cursos = browser.find_elements_by_xpath('//li[@nya-bs-option="curso in ctrl.cursos group by curso.grupo"]')
    nome_curso = [curso.find_element_by_tag_name('a').text for curso in cursos]

    我得到了包含正确数量的项目的列表,但所有这些都 = ''。谁能帮我?谢谢。

    最佳答案

    看来你已经很接近了。提取文本,例如重要文本 1重要文本 2重要文本 3重要文本4等,您必须诱导>WebDriverWait 以获得所需的 visibility_of_all_elements_ located(),您可以使用以下任一 Locator Strategies :

    • 使用 CSS_SELECTORget_attribute() 方法:

      print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "ul.dropdown-menu.inner li.nya-bs-option a")))])
    • 使用 XPATHtext 属性:

      print([my_elem.text for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//ul[@class='dropdown-menu inner']//li[contains(@class, 'nya-bs-option')]//a")))])
    • 注意:您必须添加以下导入:

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

    You can find a relevant discussion in How to retrieve the title attribute through Selenium using Python?

    <小时/>

    片尾

    根据文档:

    关于python - 在 Python 中使用 selenium 从 <li> 项中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57873122/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com