анализировать HTML в Bash (когда grep просто недостаточно)

Это сводит меня с ума, так как я уверен, что должна быть какая-то программа, выполняющая эту работу, но я просто не могу ее найти.
Следует отметить, что я буду на ARM / Raspberry, поэтому, к сожалению, Xidel здесь не вариант, если только кто-то не добр, чтобы указать мне в правильном направлении для его самого (если возможно вообще). Я также пробовал w3m но я не совсем уверен, что сбросить страницу на другой файл, который будет отформатирован, действительно поможет, но потом, пожалуйста, подтвердите, что я ошибаюсь!

В основном мне нужно прочитать https url, а затем разобрать html на что-то легко доступное из Bash и, наконец, сохранить некоторые значения в db.
Я уже делаю большую часть работы просто с grep , но как только мне нужны данные, я не совсем точно, как это должно быть отформатировано. Я застрял. См. Пример:

 <h1>Title</h1> #easy to extract Title only with grep | sed <h1> Title </h1> #no way 

Таким образом, вы можете увидеть здесь уловку, то, что мне нужно, это решение для скриптов, которое читает всю страницу и дает мне массив содержимого, а не «случайный» отформатированный вывод, который у меня есть.
Всем спасибо

2 Solutions collect form web for “анализировать HTML в Bash (когда grep просто недостаточно)”

Я бы отфильтровал файл, используя tidy , чтобы поместить каждый тег верхнего уровня в отдельную строку и использовать что-то более подходящее для этого типа скриптов (например, Perl) для обработки разметки. sed является наиболее полезным, когда изменения очень просты.

Например, фрагмент с этой страницы (после фильтрации) будет выглядеть так (используя tidy -wrap 4096 для сокращения обернутых строк):

 <body class="question-page new-topbar"> <noscript> <div id="noscript-padding"></div> </noscript> <div id="notify-container"></div> <div id="overlay-header"></div> <div id="custom-header"></div> <div class="topbar"> <div class="topbar-wrapper"> <div class="js-topbar-dialog-corral"> <div class="topbar-dialog siteSwitcher-dialog dno"> <div class="header"> <h3><a href="//unix.stackexchange.com">current community</a></h3> </div> <div class="modal-content current-site-container"> <ul class="current-site"> 

Теги "a" и т. Д. Будут встроенными, но структура страницы проще работать.

Я «загрузил» страницу с помощью lynx -source . Однако вы можете использовать множество инструментов: для этой цели чаще используются wget и curl .

попробуйте pup (для OSX: brew install https://raw.githubusercontent.com/EricChiang/pup/master/pup.rb ) u можете использовать селектор и экстрактор CSS3, чтобы получить значение от href attr

  • Как отображать каждый день месяца в отдельной строке с помощью tr, sed и cal
  • Подсчитайте ненулевые числа для каждой строки второго столбца в текстовом файле
  • Проблема удаления / замены специального символа °
  • Как предупредить sed -i от уничтожения символических ссылок?
  • Удалить строки из файла в зависимости от строк, найденных в другом файле
  • Заменить символ, кроме последних x входов
  • Удалить конкретный столбец, если он существует в файле CSV
  • Как я могу добавить тег к началу нескольких файлов?
  • Выровнять шестнадцатеричный текстовый файл по 9 байт каждой строки
  • Замена строки1 на строку 2 в строках, содержащих строку3 - со строкой1, имеющей несколько раз
  • Могут ли команды tr быть закодированы, чтобы избежать нескольких tr процессов в конвейере?
  • Linux и Unix - лучшая ОС в мире.