анализировать 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

  • Сложное содержимое переменной не попало в sed
  • Добавить что-то в каждый список в файле
  • sed regexp HEX char
  • Извлечь начальное и конечное положение общего идентификатора
  • Удаление двойных кавычек и подстановка запятой внутри него
  • sed специальный символ заменить не работает в сценарии оболочки
  • Как удалить несколько пустых строк из файла?
  • Как я могу правильно обрезать строку с помощью sed - и не убивать строку, если шаблон не существует?
  • удалить строки в файле csv старше 7 дней
  • Использование AWK добавляет новую строку, если существует совпадение
  • Использование sed для замены кода javascript в нескольких файлах
  • Interesting Posts

    Как определить статус моего сервера

    cp и mv, если уже названный файл

    Есть ли команда для перечисления сжатых размеров файлов для файлов в .zip-файле?

    Ошибка при установке nginx для нескольких приложений ReactJS на одном сервере?

    Как увеличить MAXSYMLINKS

    Как открыть окно терминала и выполнить команду после открытия оболочки?

    Какое программное обеспечение поддерживает стандарт DoD 5220-22-M 7 для SLES 10.4?

    Могу ли я получить полные возможности видео в гостевой книге Arch Linux в Virtual Box?

    использовать переменную цикла цикла для вычисления bash

    Стандартный способ выставить файл устройства для пользовательских приложений, работающих на непривилегированной учетной записи пользователя?

    Установка совместного использования CIFS в режиме, но игнорирование UID / GID

    История Loggin для syslog

    Как найти разницу в токенах в двух строках с помощью инструментов Unix?

    Как написать текст, содержащий $ var в файл bash?

    Переключатель 3 раскладки клавиатуры с 2 комбинациями клавиш

    Linux и Unix - лучшая ОС в мире.