对于以下html:
<tr>
<td class="first">AUD</td>
<td> 0.00 </td>
<td> 1,305.01 </td>
<td> 1,305.01 </td>
<td> -65.20 </td>
<td> 0.00 </td>
<td> 0.00 </td>
<td> 1,239.81 </td>
<td class="fx-rate"> 0.98542 </td>
</tr>
考虑到当前的类型,我试图获取fx-rate的值。例如,函数类似get_fx_rate(currency)
。这是我到目前为止的XPATH表达式,但它会产生一个空元素[]
。我在这里做错了什么以及正确的表达方式是什么?
"//td[@class='first']/text()[normalize-space()='AUD']/parent::td[@class='fx-rate']"
答案 0 :(得分:2)
使用此:
//td[@class = 'first' and normalize-space() = 'AUD']/parent::tr/td[@class = 'fx-rate']
或更清楚:
//tr[td[@class="first1" and normalize-space()="AUD"]]/td[@class="fx-rate"]
答案 1 :(得分:0)
这是我使用部分xpaths设法解决它的方式:
### get all the elements via xpath
currencies = driver.find_elements_by_xpath("//td[@class='first']")
fx_rates = driver.find_elements_by_xpath("//td[@class='fx-rate']")
### build a list and zip it to get the k,v pairs
fx_values = [fx.text for fx in fx_rates if fx.text]
currency_text = [currency.text for currency in currencies if currency.text]
zip(currency_text,fx_values)[1:]