La plupart d'entre nous aiment et utilisent la commande jq. Elle fonctionne sur Linux ou les systèmes de type Unix pour extraire des données de documents JSON. Récemment, j'ai découvert htmlq, qui est comme jq et écrit en langage Rust. Imaginez être capable de sed ou grep pour les données HTML. Nous pouvons rechercher, découper et filtrer des données HTML avec htmlq. Voyons comment installer et utiliser cet outil pratique sur Linux ou Unix et jouer avec les données HTML.
Qu'est-ce que l'outil htmlq ?
C'est comme jq, mais pour le HTML. Il utilise les sélecteurs CSS pour extraire des éléments de contenu des fichiers HTML. En CSS, les sélecteurs sont utilisés pour cibler les éléments HTML de nos pages Web que nous voulons styliser. Par exemple, nous pouvons extraire facilement les images ou d'autres URL à l'aide de cet outil.
Installation de htmlq sur Linux ou Unix
Voici comment installer cargo et rustc sur Ubuntu ou Debian Linux en utilisant la commande apt/apt-get :
$ sudo apt install cargo
Ensuite, tu t'enfuirais :
$ cargo install htmlq
installation de macOS cargo
Ouvrez l'application Terminal et exécutez la commande de port comme suit :
$ sudo port install cargo
Ou vous pouvez installer Homebrew sur macOS pour utiliser le gestionnaire de paquets brew comme suit :
$ brew install rustup # installs both cargo and rustc
$ rustup-init
$ rustc --version
Cargo intall FreeBSD
Je vais utiliser la commande pkg comme suit pour installer rustc :
$ sudo pkg install rust
Voir comment installer Rust pour autres systèmes d'exploitation. Maintenant que j'ai les outils rustc et cargo, je tape la commande simple suivante pour obtenir htmlq sur mon système de développement :
$ cargo install htmlq
Avez-vous installé Rust lang ? Maintenant, installez htmlq pour le plaisir et le profit en utilisant la commande cargo.
Configurer votre PATH
Assurez-vous d'ajouter $HOME/.cargo/bin à votre variable PATH pour pouvoir exécuter les binaires installés à l'aide de la commande export.
# sh/bash/ksh etc export PATH="$PATH:$HOME/.cargo/bin" # tcsh/csh etc setenv PATH $PATH:$HOME/.cargo/bin
Comment utiliser htmlq pour extraire le contenu des fichiers HTML sous Linux ou Unix
Utilisons la commande curl pour trouver une partie d'une page par ID :
$ curl -s url | htmlq #css-selector
$ curl -s url2 | htmlq #css-selector
$ curl -s https://www.hebergementwebgratuit.com/faq/ | htmlq --pretty #content | more
$ curl -s https://www.nixcraft.com | htmlq --attribute href a
Obtenir de l'aide
Il suffit de courir :
$ htmlq --help
htmlq 0.0.1 Michael Maclean Runs CSS selectors on HTML USAGE: htmlq [FLAGS] [OPTIONS] ... 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 Only return this attribute (if present) from selected elements -f, --filename The input file. Defaults to stdin -o, --output The output file. Defaults to stdout ARGS: ... The CSS expression to select
Résumé
Le htmlq est un bel outil en effet, et je l'ai beaucoup aimé. Faites vérifier le code source sur Github. Essayez-le et faites-moi savoir ce que vous en pensez dans la section des commentaires ci-dessous.