我正在用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()"
答案 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()