Большинство из нас любят и используют команду jq.
Она работает в Linux или Unix-подобных системах для извлечения данных из JSON-документов.
Недавно я нашел htmlq, который похож на jq и написан на языке Rust.
🐍 Как парсить и скрейпить HTML с помощью Pyquery
Представьте себе, что вы можете использовать sed или grep для работы с HTML-данными.
С помощью htmlq мы можем искать, нарезать и фильтровать HTML-данные.
Давайте посмотрим, как установить и использовать этот удобный инструмент в Linux или Unix и поиграть с HTML-данными.
Что такое инструмент htmlq?
Он похож на jq, но для HTML.
Использует селекторы CSS для извлечения фрагментов содержимого из файлов HTML.
В CSS селекторы используются для выделения элементов HTML на наших веб-страницах, которые мы хотим стилизовать.
Например, с помощью этого инструмента можно легко извлечь изображения или другие URL-адреса.
Установка htmlq на Linux или Unix
Вот как установить cargo и rustc на Ubuntu или Debian Linux с помощью команды apt/apt-get:
sudo apt install cargo
а затем:
cargo install htmlq
macOS – установка cargo
Откройте приложение Terminal и выполните команду port следующим образом:
sudo port install cargo
Или вы можете установить Homebrew на macOS, чтобы использовать менеджер пакетов brew следующим образом:
brew install rustup # installs both cargo and rustc rustup-init rustc --version
🍺 Что такое Homebrew и как его установить на MacOS?
FreeBSD – установка cargo
Я собираюсь использовать команду pkg следующим образом для установки rustc:
sudo pkg install rust
Теперь, когда у меня есть и rustc, и инструменты cargo, я набираю следующую простую команду:
cargo install htmlq
Убедитесь, что вы добавили $HOME/.cargo/bin в переменную PATH, чтобы иметь возможность запускать установленные бинарники с помощью команды export
# sh/bash/ksh etc export PATH="$PATH:$HOME/.cargo/bin" # tcsh/csh etc setenv PATH $PATH:$HOME/.cargo/bin
Как использовать htmlq для извлечения содержимого из HTML-файлов в Linux или Unix
Давайте воспользуемся командой curl, чтобы найти часть страницы по ID:
curl -s url | htmlq ‘#css-selector’
curl -s url2 | htmlq ‘#css-selector’
curl -s https://www.itsecforu.ru/ | htmlq –pretty ‘#content’ | more
Давайте найдем все ссылки на странице.
Например:
curl -s https://www.itisgood.ru | htmlq --attribute href a
Получение помощи
Просто запустите:
htmlq 0.0.1 Michael Maclean <michael@mgdm.net> Runs CSS selectors on HTML USAGE: htmlq [FLAGS] [OPTIONS] <selector>... FLAGS: -h, --help Prints help information -w, --ignore-whitespace When printing text nodes, ignore those that consist entirely of whitespace -p, --pretty Pretty-print the serialised output -t, --text Output only the contents of text nodes inside selected elements -V, --version Prints version information OPTIONS: -a, --attribute <attribute> Only return this attribute (if present) from selected elements -f, --filename <FILE> The input file. Defaults to stdin -o, --output <FILE> The output file. Defaults to stdout ARGS: <selector>... The CSS expression to select
Заключение
htmlq – действительно прекрасный инструмент, и мне он очень понравился.
Попробуйте его и дайте мне знать, что вам в нем понравилось, в разделе комментариев ниже.