我有一个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/
看起来你已经足够接近了。假设class
和data-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