Aller au contenu

Automatiser le crawl avec Screaming Frog en CLI

Aujourd’hui, on va s’attaquer à un sujet plutôt basique dans notre quête d’audits SEO complètement automatisés, et c’est Screaming Frog qu’on va utiliser pour crawler un site et en récupérer des données.

Je vais faire le code en python, puisque je suis à l’aise avec ce langage, et sur PC, parce que c’est aujourd’hui ce que je maîtrise le plus, mais comme Screaming Frog a une version cli pour Mac et Linux aussi, il est possible de faire un script similaire à destination des utilisateurs UNIX.

Pour que ça marche, il faut faire une chose indispensable :

Assurez vous que dans le dossier de l’exécutable Screaming Frog, vous ayez inséré le fichier spider.config avec les lignes suivantes :

Quelles étapes dans mon code ?

Mon code va commencer par aller chercher le chemin qui mène à ScreamingFrogSEOSpiderCli.exe. C’est important parce que vous n’avez peut être pas installé Screaming Frog au même endroit que moi.

Il va également aller chercher une configuration prédéfinie que j’ai appelée “SEO Spider Config.seospiderconfig” quand je l’ai enregistrée depuis l’interface graphique de Screaming Frog. Pour être tout à fait transparent, j’ai essayé d’ouvrir .seospiderconfig pour modifier des valeurs, et pour moi c’est imbitable, je suppose que c’est un langage que je ne connais pas et je ne peux pas l’exploiter. Peut être que ça changera, je mettrai alors cet article à jour.

Je vérifie quand même qu’on est bien sur Windows, c’est pour pouvoir avoir un code adapté à terme à tous les OS.

Définissons donc quelques fonctions :

Cette fonction va créer un fichier texte pour le ou les hosts à vérifier. Et surtout elle est simple d’utilisation : vous rentrez un host (www.exemple.com par exemple), vous faites “entrée” et un autre si vous en avez un deuxième à vérifier etc… jusqu’à ce que vous n’en ayez plus, et dans ce cas vous faites “entrée” sur une zone vide et la fonction sort de la boucle et va créer le fichier “host.txt”.

Cette fonction, je vais l’appeler dans la fonction main() que je vais définir au fur et à mesure :

Bon, ensuite, pour ma part, j’ai décidé de lancer la récupération de datas sur Babbar et Yourtext Guru avant de faire le crawl, ça me permet de récupérer des urls, dont la home, qui est (théoriquement) la page la plus courte en nombre de caractères, mais on pourrait décider de faire un autre script pour tester la home : Il suffirait sans doute d’appeler une url théorique en ajoutant https://+le host pour l’avoir, non ? Et si le site a bien fait les choses et que ce n’est pas la home, il devrait y avoir une redirection, non ? Si ce n’est pas le cas, ce sera sans doute une chose à noter au client.

En full auto, ça donne ça avec requests:

Et j’ajoute les lignes suivante dans le main() :

Et sinon, avec un input user, ça donne ça :

Mais bon, la version automatique devrait fonctionner (mais on ne sait jamais).

J’ai donc la liste des home sur lesquelles je vais lancer Screaming Frog, que faire ensuite ?

Comme Screaming Frog se lance en CLI, il me faut une fonction pour le lancer, avec les arguments qui correspondent. Voilà comment je résous le sujet :

Simple, basique, comme je vais trouver le chemin du fichier à exécuter, et que je vais rentrer les arguments, c’est tout ce dont j’ai besoin pour lancer le CLI.

Les arguments, d’ailleurs, parlons-en :

Voilà ceux dont je me sers le plus :

home, seospiderconfigpath et sfdir sont des variables : la home, parce que je veux réutiliser le code pour d’autres sites, le seospiderconfigpath, c’est la configuration dont j’ai parlé plus haut, et le sfdir, c’est le chemin où je vais stocker les datas du crawl Screaming Frog.

sfdir, c’est un peu ma structure personnelle. Vous pouvez décider de ne pas mettre cette ligne, personnellement je préfère créer un dossier pour chaque host, histoire de les ranger un peu mieux et de les retrouver facilement. (Et si vous lancez plusieurs crawl de suite, c’est important pour tout sortir).

Je vais donc définir une fonction pour lancer le crawl de screaming frog :

Attention, cette fonction n’est donc valable QUE SUR WINDOWS.

Le code complet :

Ici, interne_html.csv, aperçu_crawl.csv et tous_les_liens_sortants.csv sont donc disponibles dans le dossier /{host}/SFDatas/

Amusez vous bien !

PS : je peux peut être être tenté de faire de même avec d’autres crawlers, faites moi signe si ça vous intéresse !