首页 > 解决方案 > XPATH 根据上面元素中的名称返回 html 元素的内容

问题描述

<div class="vdatatable">
  <div class="rowh">Emissions
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row " data-oid="0">
    <div class="key">CO2 Emissions
    </div>
    <div class="value">117 g/km 
    </div>
    <div class="cf">
    </div>
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row1 " data-oid="0">
    <div class="key">Standard Euro Emissions
    </div>
    <div class="value">EURO6 
    </div>
    <div class="cf">
    </div>
  </div>
  <div class="rowh">Engine and Drive Train
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row " data-oid="0">
    <div class="key">Engine Size
    </div>
    <div class="value">998 cc 
    </div>
    <div class="cf">
    </div>
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row1 " data-oid="0">
    <div class="key">Gears
    </div>
    <div class="value">5 
    </div>
    <div class="cf">
    </div>
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row " data-oid="0">
    <div class="key">Number of Valves
    </div>
    <div class="value">12 
    </div>
    <div class="cf">
    </div>
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row1 " data-oid="0">
    <div class="key">Transmission
    </div>
    <div class="value">Manual 
    </div>
    <div class="cf">
    </div>
  </div>
  <div class="rowh">Fuel Consumption
  </div>
  <a name="anc0"></a>
  <div class="optexrow oid0 row " data-oid="0">
    <div class="key">EC Combined 
    </div>
    <div class="value">50.4 mpg 
    </div>
    <div class="cf">
    </div>
  </div>
</div>

我想返回 div 类“rowh”中的数据。但基于名称“排放”。我只想要这些数据,而不是来自下一个 div 的数据,它具有完全相同的类但名称为“Engine and Drive Train”。我尝试了很多变化:

//div[contains(@class, 'optexrow')]/div[@class='key']/ancestor::div[starts-with(., 'Emissions')]

//div[contains(@class, 'rowh') and contains(., 'Emissions')]/div[@class=key]

//div[preceding-sibling::div[starts-with(., 'Emissions')] and following-sibling::div[@class = 'rowh']]

但不能隔离我想要的 div。不断拾取页面上的所有 div。预期结果应该是:

CO2 Emissions
117 g/km
Standard Euro Emissions
EURO6

标签: htmlxpath

解决方案


您可以使用以下表达式: //div[@class="rowh" 和 contains(text(), "Emissions")] @class 过滤类类型“rowh”,并使用 Contains 方法过滤带有“Emissions”的文本。


推荐阅读