下面是html标记,我想使用xpath提取手机号码7788996655: -
<table class="table hover" id="resultTable">
<tbody>
<tr class="odd">
<td class="left">
<img src="/symfony/web/index.php/pim/viewPhoto/gamerNumber/1/from/gameDir" height="200" width="196">
</td>
<td class="left">
<span style="font-weight:bold;">John Player</span>
<br>
<span style="font-weight:bold;">Email: </span>
<a href="john.player@yyeett.com">john.player@yyeett.com</a>,
<span style="font-weight:bold;">
Mobile: </span>7788996655,
<span style="font-weight:bold;">Skype: </span>
game.player,
<br>
<span style="font-weight:bold;">Designation: </span>
Moderator,
<br>
<span style="font-weight:bold;">Game Name: </span>
Counter Strike
<br>
</td>
</tr>
</tbody>
</table>
我在xpath下面尝试过,但它没有用:
//td/span[contains(.,'Mobile:')]/following-sibling::text()[1]
有人能为此提供解决方案吗?
我尝试的解决方法是在 td 中获取全文,然后使用模式匹配正则表达式从中提取移动号码。但是,现在我想知道是否可以使用xpath?
答案 0 :(得分:0)
您可以使用以下XPath
来完成<parent td node xpath>/text()[preceding-sibling::span[1][text() = 'Mobile: ']]
现在解释一下。 /td/text()
将选择作为td节点一部分但不属于任何其他节点的每个文本。因此,在这种情况下,,
,7788996655,
,game.player
,moderator
。
现在,在这4个文本中,我们想要过滤掉一个包含前一个兄弟的文本,这是一个范围,并且文字为Mobile:
,因此我们可以添加[preceding-sibling::span[1][text()='Mobile: ']]