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 j'automatise les tâches répétitives pour gagner du temps dans mon quotidien de travailleur du web.


Articles Similaires

Membres Public

Snippets iTerm2 : sauvegarde tes lignes de commande préférées !

Pour cette dernière newsletter de l'année, je te propose une petite astuce toute simple pour gagner du temps dans l'utilisation du terminal. Si tu es sur Mac, tu utilises peut-être le terminal par défaut. Il est cool, mais je préfère, de loin, la version proposée par

Snippets iTerm2 : sauvegarde tes lignes de commande préférées !
Membres Public

Comment vérifier le code réponse d'une liste d'URLs dans le terminal ?

Cette semaine, j'avais besoin de vérifier le code HTTP d'une grosse liste d'URLs. Manque de chance, ma licence Screaming Frog avait expiré et j'avais la flemme de la renouveler envie de finir ce que j'étais en train de faire avant

Comment vérifier le code réponse d'une liste d'URLs dans le terminal ?
Membres Public

Comment ouvrir plusieurs fenêtres Screaming Frog sur Mac ?

Aujourd'hui, nouvelle astuce pour tirer le meilleur parti de Screaming Frog. En tant que consultant SEO et éditeur de sites, je suis souvent amené, dans une même journée, à travailler sur plusieurs sites différents. Et l'une de mes tâches récurrentes, c'est le crawl. Avec

Comment ouvrir plusieurs fenêtres Screaming Frog sur Mac ?