【问题标题】:How can I print more links from the HTML DOM using Python Selenium?如何使用 Python Selenium 从 HTML DOM 打印更多链接?
【发布时间】:2022-06-12 16:29:08
【问题描述】:

HTML:

<div class="xxxx">
<a href="ooooo.pdf"></a>
</div>

Python selenium 代码试验:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
print(wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.xxxx a"))).get_attribute('href'))

输出:

aaaaa.pdf

如何打印ooooo.pdfaaaaa.pdf

我想打印更多链接,我该怎么办?

【问题讨论】:

标签: python selenium selenium-webdriver webdriverwait getattribute


【解决方案1】:

element_to_be_clickable() 返回单个 WebElement,因此仅打印第一个匹配元素的 href 属性。


解决方案

要提取所有href 属性值,您必须为WebDriverWait 诱导visibility_of_all_elements_located(),您可以使用以下locator strategies 之一:

  • 使用CSS_SELECTOR

    print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.xxxx a")))])
    
  • 使用XPATH

    print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='xxxx']//a")))])
    

另类

你也可以试试:

  • 使用CSS_SELECTOR

    print([my_elem.get_attribute("href") for my_elem in driver.find_elements(By.CSS_SELECTOR, "div.xxxx a")])
    
  • 使用XPATH

    print([my_elem.get_attribute("href") for my_elem in driver.find_elements(By.XPATH, "//div[@class='xxxx']//a")])
    

【讨论】:

  • 谢谢你。那我该怎么办?
  • @ADAM 查看更新的答案并让我知道状态。
  • 引发 TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message: eror :(
  • 引发 TimeoutException(message, screen, stacktrace) selenium.common.exceptions.TimeoutException: Message:
  • 但是相同的 CSS div.xxxx a 似乎适用于您之前接受 answerquestion
【解决方案2】:

我想知道,HTML DOM 和 HTML Parsing/DOM Parsing 是一样的吗? 对不起,如果我问这个

【讨论】:

    猜你喜欢
    • 2019-10-18
    • 1970-01-01
    • 2021-06-26
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 2020-04-16
    • 1970-01-01
    • 2021-06-12
    相关资源
    最近更新 更多