Я разрабатываю утилиту для очистки веб-страниц, которая использует XPath для извлечения информации с веб-страниц.
Одно из применений этого программного обеспечения - очистка обзоров шоу с веб-сайтов.Одна страница, которую я пытаюсь почистить, - это последние обзоры The Guardian на фестивале в Эдинбурге: http://www.guardian.co.uk/culture/edinburghfestival+tone/reviews
Внизу я хочу найти раздел под названием «Самые последние».Выражение XPath для списка элементов обзора (то есть изображения, звездочек, даты, объявления и т. Д.) Имеет вид
//ul[@id='auto-trail-block']
, который возвращает список элементов li, каждый из которых соответствует одному элементу обзора.
Если я хочу сослаться только на объявление, самое близкое, что я могу получить, это сказать
//ul[@id='auto-trail-block']/div[@class='trailtext']
, но когда я собираю текстовое содержимое из каждого элемента списка, оно включаетмного Javascript и неприятных вещей, которые мне не нужны.Я не могу сослаться на саму рекламу, потому что она находится не внутри элемента ap, а внутри элемента div, который содержит элементы сценария и сильные элементы, которые содержат соответственно javascript и несвязанный текст.
В отладчике он выглядит как DOMкак это:
<ul id="auto-trail-block" ...>
<li ...>
<div ...>
<div ...>
<div ...>
<div class="trailtext">
<script ...>
<div ...>
<span ...>
<strong .../>
<br/>
The Text I want to copy!
<strong .../>
<a .../>
<div .../>
</div>
</div>
</li>
<li ...>
...
</li>
...
</ul>
Есть ли способ сослаться на текстовое содержимое, содержащееся только в div, а не в его подэлементах?