Xpath получить n-й элемент - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь извлечь возраст смерти из этого html, используя xpath. У меня проблема в том, что у него нет имени класса или селектора, чтобы получить информацию. Есть ли способ получить статистику 3-го класса, а затем внутри этого 3-го класса получить href, а внутри этого - возраст, следующий за промежутком?

Это то, что у меня есть, но оно не работает

=IMPORTXML(B3,"//div[@class='stat'][3]")

HTML-код:

<div class="is-flex">
    <div class="col-xs-6 col-md-12">
    <div class="stat box">
    <i class="icn icn-birthday"></i>
    <h6> Birthday </h6>
<a href="/february26.html"><span class="hidden-sm">February</span><span class="hidden-xs hidden-md hidden-lg">Feb</span> 26</a>, <a href="/year/1932.html">1932</a>
</div>
</div>
<div class="col-xs-6 col-md-12">
<div class="stat box">
<i class="icn icn-birthplace"></i>
<h6>Birthplace</h6>
Kingsland,
<a href="/birthplace/arkansas.html"> AR </a>
</div>
</div>
<div class="col-xs-6 col-md-12">
<div class="stat box">
<i class="icn icn-age"></i>
<h6>Death Date</h6><a href="/deceased/day/september12.html">Sep 12</a>, <a href="/deceased/2003.html">2003</a> (<a href="/deceased/age/71.html"><span class="hidden-sm">age </span>71</a>)
</div>
</div>
<div class="col-xs-6 col-md-12">
<div class="stat box">
<i class="icn icn-horiscope"></i>
<h6>Birth Sign</h6><a href="/astrology/pisces.html">Pisces</a>
</div>
</div>
</div>

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Это выражение xpath:

//div[@class='stat box'][1]/a[3]/text()

должно вывести:

71
0 голосов
/ 14 мая 2019

Вы можете выбрать значение возраста с помощью следующего выражения XPath-1.0:

=IMPORTXML(B3,"//div[contains(@class,'stat') and contains(h6,'Death Date')]/a[contains(@href,'/deceased/age')]/span/following::text()")

, которое возвращает 71, включая некоторые пробелы.
Чтобы избавиться от начальных и конечных пробелов, используйте

=IMPORTXML(B3,"normalize-space(//div[contains(@class,'stat') and contains(h6,'Death Date')]/a[contains(@href,'/deceased/age')]/span/following::text())")
...