1

У меня есть источник страницы, и мне нужно получить все теги из этого файла. Порядок важен. Мне нужны как внешние, так и встроенные скрипты. тег должен быть включен в вывод. Я ищу консольный инструмент 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

2 ответа2

0

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

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

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

//script

Вот еще один пример использования xpath для разбора HTML

0

Для этого вы можете использовать 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, как правило, не рекомендуется, поэтому вам следует использовать соответствующие инструменты (язык по вашему выбору или проверить эти инструменты оболочки).).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .