Aller au contenu

Extraire les liens sortants d'un site en 2 lignes de commande

Antoine Brisset
Antoine Brisset
Temps de lecture : 2 min
Extraire les liens sortants d'un site en 2 lignes de commande
Photo by Sai Kiran Anagani / Unsplash

Table des matières

Hier je suis tombé sur ce tweet de Paul Vengeons, qui se demandait comment récupérer rapidement les liens externes d'un site web.

Dans les réponses, plusieurs outils ont été cités : Screaming Frog, Majestic, ahrefs, Babbar.tech, etc.

Du coup, je me suis posé la question suivante : comment extraire les liens externes d'un site web sans utiliser de logiciel, en exécutant une simple ligne de commande ?

J'ai donc ouvert mon terminal et je me suis replongé dans la doc de Wget, un outil qui n'est plus tout jeune (la première version date de 1996) mais qui peut encore rendre bien des services.

Combiné à Lynx, un navigateur en mode texte (sorti lui en 1992 !), c'est finalement assez simple.

Crawler le site

D'abord, on télécharge toutes les pages du site.

wget --follow-tags=a -q -r -l inf https://www.seomemento.com

Explications :

  • --follow-tags=a je suis uniquement les liens a href pour éviter de télécharger les images, les scripts, etc.
  • -q : je désactive la sortie en console
  • -r : j'utilise le mode récursif
  • -l inf : je ne limite pas la profondeur de crawl

Une fois l'opération terminée, tous les fichiers HTML se trouvent dans le dossier courant.

Crawl du site et récupération des pages

Récupérer les liens

Ensuite, on extrait les liens externes.

find . -type f -name "*.html" -exec lynx -nonumbers -dump --listonly {} \; | grep -v "^javascript" | grep -v "^https://www.seomemento.com" | grep -o 'https\?:.*' | sort -u

Explications

  • find . -type f -name "*.html" : je cherche dans les fichiers HTML téléchargés
  • lynx -nonumbers -dump --listonly {} \; : j'exécute la commande lynx sur ces fichiers en retournant le résultat en console (-dump), en extrayant les liens (--listonly) et sans afficher de numéro de ligne (-nonumbers)
  • grep -v "^javascript" : je retire les lignes commençant par "javascript"
  • grep -v "^https://www.seomemento.com" : je retire les lignes commençant par "https://www.seomemento.com", autrement dit les liens internes
  • grep -o "https\?:.*" : je ne garde que les liens commençant par "http:" ou "https:"
  • sort -u : j'affiche les liens en les dédoublonnant et en les triant par ordre croissant
Extraction des liens

Si tu veux t'en servir à ton tour, il faudra sûrement que tu joues avec grep pour éliminer le bruit (facebook.com, twitter.com, pinterest.com, linkedin.com, etc.) et éventuellement modifier le paramètre -l de Wget s'il s'agit d'un site avec beaucoup de profondeur.

Tu peux aussi tout sauvegarder dans un fichier .txt en ajoutant > links.txt directement après la commande sort -u.

Et voilà !

Terminal

Antoine Brisset Twitter

Consultant SEO depuis 2010. Je traque les clics inutiles et automatise les tâches répétitives pour gagner du temps dans mon quotidien de travailleur du web.

Commentaires


Articles Similaires

Membres Public

Extraire les URLs d'un sitemap XML en une ligne de commande

Aujourd'hui, petite astuce qui fait suite à ce tweet de @bunbeau qui a attiré mon attention la semaine dernière. D'ailleurs pour celles et ceux qui veulent gagner du temps : 1. Vous balancez votre sitemap là-dedans : https://t.co/t4tN0m6h8r 2. Copy/Past dans un projet (neuf ou non) sur @indexmenow

Extraire les URLs d'un sitemap XML en une ligne de commande