如何在python中使用Xpath提取HTML标记中的元素



我有一个HTML标签,看起来像这个

<tr class="js-row  DC is-odd" data-nationality="Indian" data-team-id="3">
<td class="top-players__freeze js-pos top-players__pos DC">2</td>
<td class="top-players__freeze top-players__player">
<div class="top-players__image">
<img class="js-headshot" src="//static.iplt20.com/players/210/Photo-Missing.png" 

我正在尝试使用XPath提取数据国籍值,但是我不太确定如何做到这一点。

在选择tr元素后,我尝试过这样的方法:

driver.find_elements_by_xpath("//tr[contains(@class,'js-row  DC is-odd')]/@data-nationality")

然而,这并没有奏效。有人能帮我吗?

尝试使用get_attribute()元素方法。

driver.find_element_by_xpath("//tr[contains(@class,'js-row  DC is-odd')]").get_attribute("data-nationality")

https://www.geeksforgeeks.org/get_attribute-element-method-selenium-python/

看起来你已经足够接近了。假设classdata-team-id="3"中的值DC是元素中的两个唯一属性值,要打印数据国籍属性的值,即印度,您需要诱导WebDriverWait等待visibility_of_element_located(),您可以使用以下定位器策略之一:

  • 使用CSS_SELECTOR:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "tr.js-row.DC.is-odd[data-team-id='3']"))).get_attribute("data-nationality"))
    
  • 使用XPATH:

    print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//tr[@class='js-row  DC is-odd' and @data-team-id='3']"))).get_attribute("data-nationality"))
    
  • 控制台输出:

    Indian
    
  • 注意:您必须添加以下导入:

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

最新更新