Получить выбранный тег из html-файла

Получить выбранный тег из html-файла

У меня есть исходник страницы, и мне нужно получить все теги из этого файла. Порядок важен. Мне нужны как внешние, так и встроенные скрипты. тег должен быть включен в вывод. Я ищу консольный инструмент Linux.

Я пробовал искать, но ничего не нашел, вплоть до того, что использовал jQuery, чтобы получить эту информацию и вставить ее в файл. Но этот вывод имеет какую-то странную кодировку, поэтому мне нужно разобрать его традиционным способом.

Пример: Ввод:

<html>
  <head>
    <script src="script1.js"></script>
    <script src="script2.js"></script>
    <script>alert('hello');</script>
  </head>
  <body>
    <div id="main">...</div>
    <script src="footer.js">
  </body>
</html>

Выход:

<script src="script1.js"></script>
<script src="script2.js"></script>
<script>alert('hello');</script>
<script src="footer.js">

Второй пример: вывод только атрибутов src.

script1.js
script2.js
inline script 
footer.js

решение1

Для этого можно использовать grepи его единственный соответствующий параметр ( -o), например:

$ grep -o "<[^>]*>" <(curl -s http://example.com/)

Это позволит распечатать все HTML-теги, включая заказ.

Чтобы включить только <script>теги, попробуйте (измените index.htmlв своем файле):

$ grep -Eo "<script.*(</script>|>)" index.html

Чтобы получить только имена файлов (из srcатрибута), можно расширить, добавив еще один grep, например:

$ grep -Eo "<script.*(</script>|>)" index.html | grep -o '"[^"]*"' | tr -d '"'

Приведенный выше синтаксис не поможет вам с множеством различных вариаций HTML-кода, поэтому для более сложных решений,использование регулярных выражений для разбора htmlв общем случае не рекомендуется, поэтому вам следует использовать соответствующие инструменты (язык по вашему выбору или ознакомиться с этимиинструменты оболочки).

решение2

Я знаю, что вы уже приняли ответ, но я также хочу добавить, что вы можете рассмотретьxpath.

Он предназначен специально для данных в стиле XML.

В вашем случае xpath для этого будет таким:

//script

Здесьэто еще один пример того, как кто-то использует xpath для разбора HTML

Связанный контент