两个节点之间的Xpath提取

时间:2017-01-09 22:12:50

标签: xpath google-sheets

我有几个网页具有以下结构

<div id="w_33086" class = "eight columns">
<h2 id="about">About<span itemprop="name">Name of Place</span></h2>
<p style="margin-top: 0px;">
.
.
.
<p class="contactAdvisor"><a href="http://www.example.com/contact">

两段之间的文本和标记非常易变,因为它是通过个人用户创建的。在某些情况下,它包括标记,在某些情况下它不包括。当它包含标记时,标记可以变化很大。

我试图选择这两个<p>之间的所有文字和标记但是没有成功。

我取得的最佳成绩来自于// div [id =&#39; w_33086&#39;] / node()

但是,如果存在<p>标记,则会丢弃它。它还会选择我想要排除的<h2>代码和<p class="contactAdvisor">

我使用Google表格(和Screaming Frog)来应用xpath

1 个答案:

答案 0 :(得分:0)

如果两个<p>元素是彼此的兄弟姐妹,那么您可以尝试

//div[id='w_33086']/p[@style="margin-top: 0px;"]/
   following-sibling::node()[following-sibling::p[@class="contactAdvisor"]]

这假设<p>下只有一个<div id="w_33086">具有styleclass属性值(分别),我们用它来识别它们。

请注意,XPath不会选择任何“标记”。它选择节点,如文本节点,元素(附加了后代)和属性。这些节点可以序列化为标记,但这不是XPath的业务。