我想提取此表的特定数字(第一个TD)的地址。该表的唯一唯一标识符是H3。
以下是表格的代码:
<table width="95%" cellpadding=5 cellspacing=0 border=1>
<tr><td colspan="4"><h3>The list</td></tr>
<tr>
<td>Number</td><td>First Name</td>
<td>Last Name</td><td>Address</td>
</tr>
我试过了:
//table[@h3=’See this now’]/’tr/td[87] and td[107] and td[116]
我是xpath的新手,也是一般的编程。这很有趣,但是很想能够把这个想出来!感谢任何帮助:D
答案 0 :(得分:1)
首先,你的HTML是错误的。
您必须将属性括在引号中。
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>Number</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
修复XHTML的格式后。您可以遍历文档树。
XPATH
任何表格,任何td都有h3。
//table//td/h3
将返回
<h3>The list</h3>
编号
//table//tr[2]/td[1] <-- any table, the second tr element in this table, the first td in that second tr
将返回
<td>Number</td>
因此,如果我们向文档中添加多个表,并且您希望在任何表中找到每个元素的多个结果,这非常简单。假设我们有一个XHTML文档,在父元素中包含许多表,例如&#39; root&#39;元件。
<root>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>123</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>456</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>The list</h3>
</td>
</tr>
<tr>
<td>789</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
</root>
我们可以使用以下XPATH表达式提取每个表中每第二行中第一个表数据的数量:
//table/tr[2]/td[1]
这将给我们
的结果<td>123</td>
-----------------------
<td>456</td>
-----------------------
<td>789</td>
现在,假设我们有几个表,但只有一个表对我们非常重要,表必须有一个H3元素,没有其他元素对我们很重要,如果这个表有一个H3元素,我们想要提取第二行首先是td。
<root>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h4>Ignore me!</h4>
</td>
</tr>
<tr>
<td>1164961564896</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h1>I'm not interesting</h1>
</td>
</tr>
<tr>
<td>456456466465</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
<table width="95%" cellpadding="5" cellspacing="0" border="1">
<tr>
<td colspan="4">
<h3>IM THE IMPORTANT TABLE!</h3>
</td>
</tr>
<tr>
<td>123456789</td>
<td>First Name</td>
<td>Last Name</td>
<td>Address</td>
</tr>
</table>
</root>
如果我们成功找到H3元素,我们可以通过遍历树来完成这个,然后转到下一个tr。
//table//h3/../../../tr/td[1]
将返回
<td colspan="4">
<h3>IM THE IMPORTANT TABLE!</h3>
</td>
-----------------------
<td>123456789</td>