【问题标题】:Xpath get element with conditionXpath 获取有条件的元素
【发布时间】:2015-07-10 17:15:51
【问题描述】:

我有一些代码块,需要从中获取数据并尝试不同版本的 xpath 命令,但没有成功。

<div>
    <div class="some_class">
        <a title="id" href="some_href">
            <nobr>1<br>
        </a>
    </div>
    <div class="some_other_class">
        <a title="name" href="some_href">
            <nobr>John<br>
        </a>
    </div>
</div>

<div>
    <div class="some_class">
        <a title="id" href="some_href">
            <nobr>2<br>
        </a>
    </div>
    <div class="some_other_class">
        <a title="name" href="some_href">
            <nobr>John<br>
        </a>
    </div>
</div>

// and many blocks like this

所以,这个 div 块是相同的,只是它们的子元素的内容不同。我需要 xpath 查询来获取 John 的 href,&lt;a title="id"&gt; 等于 1。

我尝试过这样的事情:

//div[./div/nobr='1' AND ./div/nobr='John']

只获取包含我需要的数据的 div,然后不难获取 John 的 href。

另外,我设法通过以下方式获得了 John 的 href:

//a[./nobr='John'][@title='name']/@href

但这样它不依赖于来自 &lt;a title="id"...&gt; 元素的值,但它必须依赖它。

有什么建议吗?

【问题讨论】:

  • 如果你想得到“John's href”,为什么不创建一个John's href 与其他href 属性不同的例子,这样你就可以清楚地表达你想要什么?
  • 另外,请注意 XPath 仅在格式良好的标记上定义,而您的示例不是:有多个根元素和多个未闭合元素。
  • 这与 href 无关,我已经明确表示我需要在 John 的“超级元素”内的 href,即 John 的子元素a> 标签具有我需要的 href 属性。未闭合元素 是一个错字。谢谢你慷慨的小评论:)
  • 对不起,如果你真的说清楚了,我们现在已经为你回答了你的问题。祝你好运。

标签: html dom xpath


【解决方案1】:

认为你想要的是

//div/div[a/@title='id']/following-sibling::div[1]/a/@href

给定格式良好的输入文档,将返回(由-------- 分隔的各个结果):

href="some_href"
-----------------------
href="some_href"

不过,正如 kjhughes 所指出的那样,您并没有很清楚地解释它,也许您的示例 HTML 并不理想。

关于你尝试的路径表达式,由于输入是 HTML,很难知道是否

<nobr>John<br>

表示“John”是否nobr元素内。

【讨论】:

    【解决方案2】:

    感谢 Mathias,您的示例很有帮助,但由于 @title='id' 的元素很多,所以它不是总是能捕捉到好的元素的可靠解决方案。

    我设法解决了问题,首先捕获了整个 div,然后提取了我需要的 href。

    //div[./div/a[@title='name']/nobr='John' and ./div/a[@title='id']/nobr='1'] 
    //a[./nobr='John'][@title='name']/@href 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      相关资源
      最近更新 更多