我在创建跟踪HTML的Xpath时遇到了问题:
<html>
<body>
<table class="tablesorter">
<tbody>
<tr class="tr_class">
<td>{some td info}</td>
<td>{some td info}</td>
<td>
<span class="span1">
<span class="span2">Out</span>
<span class="span3">SMTH</span>
<span class="span4">Out</span>
</span>
</td>
</tr>
<tr class="tr_class">
<td>{some td info}</td>
<td>{some td info}</td>
<td>In</td>
</tr>
<tr class="tr_class">
<td>{some td info}</td>
<td>{some td info}</td>
<td>In</td>
</tr>
</tbody>
</table>
</body>
</html>
我想要的是创建Xpath,它将返回每个第三个td节点的内容(如果它没有子节点)或者它的span的内容具有class =“span2”。 例如,对于这个html,它应该返回
Out,In,In
我有Xpath将返回所需的span节点,它看起来像:
//table[@class = 'tablesorter']//td[3]/descendant::*[@class='span2']/text()
我有Xpath,它会返回每个3d td节点的简单内容:
//table[@class = 'tablesorter']//td[3][count(descendant::*)=0]/text()
但我只需要一个Xpath,因为对我而言,有必要对'In'或'Out'值进行正确的排序(在表中排序)
答案 0 :(得分:1)
这样做,不知道它对你的“语料库”有多强大:
//table[@class="tablesorter"]/tbody/tr/td[3]/descendant::text()[normalize-space(.)!=""]
['Out', 'In', 'In']
<强>更新强>
//table[@class="tablesorter"]/tbody/tr/td[3]/descendant::text()[normalize-space(.)!=""][parent::td or parent::span[@class="span2"]]