【问题标题】:XPath for next/sibling/following HTML element?下一个/兄弟/后续 HTML 元素的 XPath?
【发布时间】:2015-05-04 23:19:39
【问题描述】:

在下面的 HTML 代码中,我有两个嵌套的 <href> 链接:

<a href="/cgi-bin/WebOb/mamool/8.2">
<img width="12" border="0" align="ABSMDIDDLE" height="7" src="/WebOb/mamool/Frameworks/fig.gif">
Click me for more info
</a>
<table border="1" size="2" font="">
<tbody>
<tr>
<td>
<font size="2">
<a name="179"></a>
    <a href="/cgi-bin/WebOb/mamool/8.2.44">
    <img width="12" border="0" align="ABSMDIDDLE" height="7" src="/WebOb/mamool/Frameworks/myfig.gif">
</a>
</td>
</tr>
<tr bgcolor="#d6e2ff">
<td>
</tr>
</tbody>
</table>

我可以很容易地找到第一个 &lt;href&gt; 链接的 XPath,如下所示:

//a[contains(text(), 'Click me for more info')]

现在我想知道如何在不搜索的情况下找到下一个&lt;href&gt;,只需说出类似.next() 的内容?

【问题讨论】:

    标签: html xml r xpath web-scraping


    【解决方案1】:

    可以使用following-sibling 轴选择下一个兄弟元素:

    //a[contains(text(), 'Click me for more info')]/following-sibling::*[1]
    

    将在您的示例中选择 table 元素。

    如果要选择文档中的下一个a 元素,请使用following 轴:

    //a[contains(text(), 'Click me for more info')]/following::a[1]
    

    【讨论】:

    • 只是一个快速的问题@kjhughes,如果我有两个都包含“点击我了解更多信息”的href链接怎么样,我应该如何选择第一个,这是正确的吗? //a[contains(text(), '点击我了解更多信息')][1]/following::a[1]
    • 要选择第二个“点击我了解更多信息”a,请使用//a[contains(text(), 'Click me for more info')][2]。
    • 嗨@kjhughes,我对此有一个问题。无论如何使“包含”功能独立于大写或小写字母。例如,在上述情况下,我想同时检测“点击我了解更多信息”和“点击我了解更多信息”。非常感谢
    • 是的:请参阅XPath 2.0 case-insensitive contains(),或者,如果您坚持使用 XPath 1.0,请参阅 here。
    猜你喜欢
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多