Рассмотрим следующий HTML-код, как и в файле example.html
Получить определенный элемент с xmllint
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<body>
<div class="container">
<h1>
<a href="/">
<img src="/images/image.png"/>
</a>
</h1>
<ul>
<li><a href="/" >link1<br /><span>content</span></a></li>
<li><a href="/folder" >link2<br /><span>more contend</span></a></li>
</ul>
</div><!-- .container -->
<div class="container">
<ul class="disc">
<li><strong>no interest 1</strong></li>
<li><strong>no interest 2</strong></li>
<li><strong>no interest 3</strong></li>
<li>keyword1: <strong>unkown_content</strong></li>
<li>keyword2: <strong>unkown_content</strong></li>
</ul>
</div><!-- .container -->
<div class="container">
<ul class="disc">
<li><a href="/folder1">not interested</a></li>
<li><a href="/folder2">not interested</a></li>
<li><a href="/folder3">not interested</a></li>
<li>keyword1: <strong>unkown_content</strong></li>
<li>keyword2: <strong>unkown_content</strong></li>
</ul>
</div><!-- .container -->
</body>
</html>
Я хотел бы получить unkown_content
после второго keyword1
. Я пытался
xmllint --html --xpath "//li[text()='keyword1: ']" example.html 2>/dev/null
<li>keyword1: <strong>unkown_content</strong></li><li>keyword1: <strong>unkown_content</strong></li>
Как вы можете видеть, это возвращает оба узла с keyword1
. Как получить содержание последнего появления?
Я пробовал первый, и он не работал. Второй, с фигурными скобками, сделал трюк. Моя последняя команда - «xmllint --html --xpath» (// li [text() = 'keyword1:']) [last()]/strong/text() ". Это получает контент, в котором я нуждаюсь. Благодарю. – nautical