查找XPATH表达式

时间:2012-01-09 19:46:43

标签: html css xml xpath

对于以下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']"

2 个答案:

答案 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:]