Я хочу извлечь содержимое следующего узла a tag
с XPath
в python. пока мне удается извлечь содержимое без внутреннего тега. проблема в том, что мой метод не работает, если следующий узел имеет дочерний узел. Я использую lxml
пакет и вот мой код:
from lxml.html import etree, fromstring
reference_titles = root.xpath("//table[@id='vulnrefstable']/tr/td")
for tree in reference_titles:
a_tag = tree.xpath('a/@href')[0]
title = tree.xpath('a/following-sibling::text()')
это работает для этого HTML:
<tr>
<td class="r_average">
<a href="http://somelink.com" target="_blank" title="External url">
http://somelink.com
</a>
<br/> SECUNIA 27633
</td>
</tr>
Здесь заголовок правильно "SECUNIA 27633", но в этом html:
<tr>
<td class="r_average">
<a href="http://somelink.com" target="_blank" title="External url">
http://somelink.com
</a>
<br/> SECUNIA 27633 <i>Release Date:</i> tomorrow
</td>
</tr>
Результат "SECUNIA 27633 tomorrow
"
Как мне извлечь "SECUNIA 27633 Release Date: tomorrow
"?
РЕДАКТИРОВАТЬ: использование node()
вместо text()
в XPath
возвращает все узлы в нем. поэтому я использую это и создаю последнюю строку с вложенным for
оператором
title = tree.xpath('a/following-sibling::node()')
но я хочу знать, есть ли лучший способ просто извлечь текстовое содержимое независимо от дочерних узлов с помощью XPath
query