Html Xpath获取两个元素之间的元素,我们可以';t使用id或文本识别第二个标签
我有一个与这个问题类似的问题。但是在我的特定情况下,html可以变化,我不能使用第二个元素的文本 基本上我的结构如下:Html Xpath获取两个元素之间的元素,我们可以';t使用id或文本识别第二个标签,html,xpath,boolean-logic,Html,Xpath,Boolean Logic,我有一个与这个问题类似的问题。但是在我的特定情况下,html可以变化,我不能使用第二个元素的文本 基本上我的结构如下: <h1>Account Information</h1> <a class="null" href="http:...">Remarks</a> <a class="null" href="http:...">Owner Information</a> <b>Account Detail<
<h1>Account Information</h1>
<a class="null" href="http:...">Remarks</a>
<a class="null" href="http:...">Owner Information</a>
<b>Account Detail</b>
<a class="null" href="http:...">Industrial</a>
<a class="null" href="http:...">land</a>
<b >Transfers</b>
<a class="null" href="http:...">11111</a>
<a class="null" href="http:...">22222</a>
对于这种情况,由于在b='Account Detail'之后只有一个b,因此可以正常工作
我得到
[工业、土地]
但是如果在b='Account Detail'之后有多个
但是如果我们有多个
账户信息
账户明细
许可证
转移
结果是:
[工业、土地,12-12-222,22-2-22]
这不是期望的行为
有什么建议吗?
提前感谢请尝试下面的XPath以获取所需的节点:
//a[preceding-sibling::b[1]='Account Detail' and following-sibling::b]
previous sibling::b[1]=“Account Detail”
打算在包含“Account Detail”
内容的锚之前获取没有前辈的锚
,好的,这里的b[1]或b有什么区别?b[1]='Account Detail'
意味着前面的第一个同级b
节点具有内容'Account Detail'
,因此在这种情况下,例如,12-12-222
将不会与前面的第一个同级b
匹配,因为该锚具有内容“允许”
。它实际上可以简化为//a[前面的兄弟姐妹::b[1]=“帐户详细信息”]
<h1>Account Information</h1>
<a class="null" href="http:...">Remarks</a>
<a class="null" href="http:...">Owner Information</a>
<b>Account Detail</b>
<a class="null" href="http:...">Industrial</a>
<a class="null" href="http:...">land</a>
<b class="">Permits</b>
<a class="null" href="http:...">12-12-222</a>
<a class="null" href="http:...">22-2-22</a>
<b >Transfers</b>
<a class="null" href="http:...">11111</a>
<a class="null" href="http:...">22222</a>
//a[preceding-sibling::b[1]='Account Detail' and following-sibling::b]