Мне интересно, как я могу извлечь содержимое гиперссылки в HTML,
Например:
<article id="post36">
<div>
<h3><a href="/blog/2019/4-14-canaries-in-the-coal-mine.html">Canaries in the Coal Mine</a></h3>
<p class="author">Posted by <a href="/blog/authors/moderator.html" rel="author">Moderator</a></p>
<p><time><span>Sunday, April 14th, 2019</span> — 8:17AM</time></p>
</div>
Другие сообщения выглядят так (без внешней страницы):
<article id="post33">
<div>
<h3><a href="#post33">Landlines Win Again</a></h3>
<p class="author">Posted by <a href="/blog/authors/moderator.html" rel="author">Moderator</a></p>
<p><time><span>Friday, December 21st, 2018</span> — 7:14AM</time></p>
Во внешнем скрипте мне передается идентификатор конкретного сообщения. В этом случае пост 36 ниже. У меня есть страница, содержащая все метаданные поста в тегах статьи, как показано ниже.
Я попытался использовать catting веб-страницу (у меня есть локальная копия) и передать ее по номеру sed -n 's|[^<]*<article\([^<]*\)</article>[^<]*|\1\n|gp'
Такого рода работы. Он возвращает только все идентификаторы статей, например:
<article id="post6">
<article id="post5">
<article id="post4">
<article id="post3">
<article id="post2">
<article id="post1">
Мой вывод таков: он работает только на текущей строке. И когда я пытаюсь на самом деле использовать идентификатор, я ничего не получаю: sed -n 's|[^<]*<article id="post36">\([^<]*\)</article>[^<]*|\1\n|gp'
Мой вопрос здесь заключается в том, как использовать встроенные инструменты Unix (sed, grep, awk и т. Д.) Для извлечения гиперссылки? В этом случае мне нужно /blog/2019/4-14-canaries-in-the-coal-mine.html
Да, я проконсультировался с несколькими сообщениями SO, такими как , этот и , этот , большинство из которых не одобряют подобные вещи (я пробовал собственные решения, но ни один не работал) , Две вещи:
- HTML форматируется красиво. В коде никогда не будет лишних пробелов, возврата каретки или чего-либо еще. Блоки всегда будут выглядеть так. Это очень специфическое приложение.
- Если на самом деле невозможно сделать это без какого-либо добавления или внешней программы, я бы хотел придерживаться базовых инструментов Unix.