Un outil en ligne de commande pour extraire des données depuis du HTML
Par le passé, j’ai déjà évoqué la commande jc au détour d’un article. Pour rappel, jc permet de transformer des données textuelles provenant de commandes ou de scripts en données structurées de type JSON.
Et aujourd’hui, j’aimerais vous parler de htmlq qui reprend le principe de fonctionnement de jq sauf que là, on bosse sur de la donnée structurée en HTML. L’outil permet ainsi de sélectionner et extraire des éléments d’un fichier HTML en utilisant des sélecteurs CSS.
Histoire que vous captiez mieux, voici un exemple permettant de récupérer le HTML contenu dans un élément dont la classe est .post :
curl --silent https://korben.info/ | htmlq '
```.post```
'
Par exemple pour sortir tous les liens d’une page :
curl https://korben.info/ | htmlq --attribute href a
Ou encore pour récupérer uniquement un format textuel (sans les balises HTML) :
curl --silent https://korben.info | htmlq --text .post
Cela permet de faire beaucoup de choses assez facilement sans forcément avoir à coder un truc pour jouer avec les XPath.
Maintenant pour install htmlq, ça dépend de votre OS :
Cargo :
cargo install htmlq
FreeBSD :
pkg install htmlq
Homebrew (macOS) :
brew install htmlq
Scoop (Windows) :
scoop install htmlq
Pour tous les détails, je vous invite à lire la doc sur Github.