Un outil en ligne de commande pour extraire des données depuis du HTML

par Korben -

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.