XPath的。获得特定的兄弟姐妹

时间:2014-11-25 06:43:42

标签: xpath siblings

我正在用python编写一个Google app引擎项目。我需要废弃银行网站,从中获取汇率。

html的例子:

<tr> 
                            <td width="2"><img src="./images/zero.gif" width="2" height="2" border="0" /></td>
                            <td width="41" class="curvalsh" align="left" valign="middle"><font color="#DC241F">USD</font></td>
                            <td width="41" class="curvalsh" align="right" valign="middle"><b> 15.20 </b></td>
                            <td width="4" align="left" valign="middle"><img src="./images/zero.gif" width="2" height="20" border="0" hspace="1"></td>
                            <td width="41" class="curvalsh" align="right" valign="middle"><b> 16.00 </b></td>
                            <td width="4" align="left" valign="middle"><img src="./images/zero.gif" width="2" height="20" border="0" hspace="1"></td>
                            <td width="41" class="curvalsh" align="right" valign="middle"> - </td>
                            <td width="2" align="left" valign="middle"><img src="./images/zero.gif" width="2" height="20" border="0" hspace="1"></td>
                        </tr>

我需要在包含“USD”文本的标签(带有15.20和16.00的标签)之后使用文本获取接下来的两个标签。

我已经做的是:

xpath = "//tr/td[text()='USD']/following-sibling::td/text()"

但是这不会返回任何内容,这不是我需要的,因为我必须指定在标记“USD”后获得2个标记包含文本,因为还有标记不包含任何文字。

修改

我也尝试过这样,仍然没有返回任何内容

xpath = "//tr/td[text()='USD']/following-sibling::td[matches(text(),'(^|\W)[0-9]+.[0-9]+($|\W)','i')]/text()"

1 个答案:

答案 0 :(得分:0)

请注意,在找到搜索文本之前,td中有另一个标记,因此您可以直接搜索:

//tr/td/font[text()='USD']......

//tr//font[text()="USD"]......

在任何情况下,您都会使用..向上升级,就像浏览文件系统一样。

好吧,还有另一个标签隐藏在那里,您可以使用b/text()直接引用,或者通过//text()

获取下一个兄弟的所有文字

它的外观如下:

//tr/td/font[text()='USD']/../following-sibling::td/b/text()