Fil d’ariane, Python 3 et OnCrawl : En route vers l’automatisation

14 avril 2021 - 10  min de lecture - par Mickaël Serantes
Accueil > SEO Technique > Fil d’ariane, Python 3 et OnCrawl

Apprenons comment créer automatiquement une segmentation basée sur le fil d’ariane avec OnCrawl et Python 3.

Qu’est ce que la segmentation dans OnCrawl ?

OnCrawl utilise les segmentations pour regrouper un ensemble de pages dans des groupes. Cela permet d’analyser les données issues du rapport de crawl, de l’analyse de logs et des autres rapports croisés (avec Google Analytics, Google Search Console, AT Internet, Adobe Analytics, Majestic pour les backlinks), très facilement.

Pourquoi est-il important de créer des segmentations ?

Une fois que votre crawl est terminé, la création d’une segmentation personnalisée est ce qu’il y a de plus important à réaliser. Cela permet d’avoir un angle de vue des analyses qui colle le mieux à votre site et à sa structure.

Il y a plusieurs façons de segmenter les pages de votre site, et il n’y a pas de bonnes ou de mauvaises façons de faire. Il est par exemple possible de suivre la structure de votre site en se basant sur les URLs.

Par exemple ce genre d’URL “https://www.mondomaine.com/actualites/france/politique” , pourra facilement être segmenté comme ceci :

  • Un groupe pour isoler la Homepage
  • Un groupe pour regrouper toutes les actualités
  • Un sous-groupe pour le répertoire FRANCE
  • Un sous-sous-groupe pour le répertoire Politique

Comme vous le voyez, il est possible de créer jusqu’à 3 niveaux de profondeur pour vos segmentations. Cela permet de se focaliser sur certains groupes ou sous-groupes dans les analyses SEO, sans forcément changer de segmentation.

Comment créer une segmentation de base ?

Il faut savoir que OnCrawl s’occupe de créer la première segmentation, tout seul comme un grand. Pour cela on se base sur le “First path” ou sur le premier répertoire rencontré dans les URLs.
Cela permet donc d’avoir une analyse disponible dès que votre crawl est terminé.
Il se peut que cette segmentation ne reflète pas au mieux la structure de votre site, ou que vous souhaitiez analyser les choses sous un angle différent.
Vous allez donc créer une nouvelle segmentation en utilisant ce que nous appelons les OQL, pour OnCrawl Query Language. Ça ressemble un peu à du SQL, en beaucoup plus simple et intuitif :

Il est également possible d’utiliser des opérateurs de condition ET/OU afin d’être le plus précis possible :

Segmenter mes pages autrement

Utiliser les autres KPIs

Des segmentations basées sur les URL c’est bien, mais ça serait parfait si on pouvait aussi combiner d’autres KPIs, comme par exemple regrouper les URLs commençant par /location-voiture/ et dont le H1 possède l’expression “Agences de location voiture” et un autre groupe où le H1 serait “Agences location utilitaire”, c’est possible ça ?

Oui c’est tout à fait possible ! Pendant la création de vos segmentations, vous avez à disposition l’ensemble des KPIs que nous utilisons, et pas seulement ceux du crawler, mais aussi ceux des connecteurs. Ça rend donc la création des segmentations très puissante et ça permet d’avoir des angles d’analyse totalement différents !

Par exemple, j’adore créer une segmentation en utilisant la position moyenne des URLs grâce au connecteur Google Search Console.

De cette manière, je peux facilement identifier les URLs profondes dans ma structure qui performent tout de même, ou les URLs proches de ma page d’accueil, qui sont en page 2 de Google.

Je peux voir si ces pages possèdent du contenu dupliqué, un titre non renseigné, si elles reçoivent assez de liens, je peux voir aussi comment le Googlebot se comporte sur ces pages. Est-ce que la fréquence de crawl est bonne ou insuffisante ? En résumé, cela m’aide à prioriser et à prendre les décisions qui auront un réel impact sur mon SEO et sur mon ROI.

Utiliser la Data Ingest

Si vous ne connaissez pas notre feature Data Ingest, je vous invite à d’abord lire cet article sur le sujet. C’est un autre outil très puissant qui permet d’ajouter des sources de données externes à OnCrawl.
On peut par exemple ajouter les données de SEMrush, de Ahrefs, les données de Babbar.tech. L’avantage sera de regrouper vos pages en fonction des métriques de ces outils et d’avoir les analyses croisées en fonction des données qui vous intéressent et ne sont pas dans OnCrawl nativement.

Récemment, j’ai travaillé avec un groupe hôtelier mondial, ils utilisent une méthode de scoring interne pour savoir si les fiches hôtel sont bien renseignées, si elles possèdent des images, des vidéos, du contenu, etc… Ils déterminent un pourcentage de complétion, que nous avons utilisé pour croiser les données.

Le résultat permet de savoir si Googlebot passe plus souvent sur les pages bien remplies, savoir si certaines pages avec un score de plus de 90% sont trop profondes, ne reçoivent pas assez de liens, et démontrer que plus le score est élevé, plus les pages reçoivent des visites, plus elles sont explorées par Google et meilleure est leur position dans la Serp Google. Un argument imparable pour inciter les hôteliers à remplir leur fiche hôtel !

Créer une segmentation basée sur le fil d’ariane

C’est le sujet de cet article, alors rentrons dans le vif du sujet. Il est parfois difficile de segmenter les pages de votre site, si la construction des URLs ne les rattachent pas à un certain répertoire. C’est souvent le cas avec des sites e-commerces, où les pages produit sont toutes à la racine. Impossible donc de se baser sur l’URL pour savoir à quel groupe appartient une URL.
Pour tout de même les regrouper, il faut donc trouver un moyen. Nous avons donc eu l’idée de récupérer le fil d’ariane de chaque URL et de les catégoriser avec les valeurs retournées, en utilisant la fonction de Scraper qu’offre OnCrawl.

Scraping du fil d’ariane avec OnCrawl

Comme on l’a vu plus haut, on va mettre en place une règle de scraping pour récupérer le fil d’ariane. La plupart du temps c’est assez simple car on peut aller récupérer les informations dans une div, puis les champs de chaque niveau se trouvent dans des listes ul et li :

Parfois aussi on peut facilement récupérer l’information grâce aux données structurées type Breadcrumb. Il sera donc facile de récupérer la valeur du champ “name” pour chaque position.

Voici un exemple de règle de scraping que j’utilise :

Ou encore cette règle : //li[contains(@class, "current-menu-ancestor") or contains(@class, "current-menu-parent") or contains(@class, "current-menu-item")]/a/text()

Je récupère donc toutes les span itemprop="title” avec le Xpath, puis j’utilise une expression régulière pour extraire tout ce qui se trouve après “> et qui n’est pas un caractère >. Si vous souhaitez en savoir plus au sujet des Regex, je vous invite à lire cet article sur le sujet et notre Cheat sheet sur les Regex.

En sortie j’obtiens plusieurs valeurs comme ceci :

Pour l’URL testée, je vais donc avoir un champ “Breadcrumb” avec 3 valeurs :

  • Homme
  • Polo
  • Polo manches courtes
import json
import random
import requests

# Authent
# Two ways, with x-oncrawl-token than you can get in request headers from the browser
# or with api token here: https://app.oncrawl.com/account/tokens
API_ACCESS_TOKEN = '    '
# Set the crawl id where there is a breadcrumb custom field
CRAWL_ID = '    '
# Update the forbidden breadcrumb items you don't want to get in segmentation
FORBIDDEN_BREADCRUMB_ITEMS = ('Accueil',)
FORBIDDEN_BREADCRUMB_ITEMS_LIST = [
                                 v.strip() 
                                 for v in FORBIDDEN_BREADCRUMB_ITEMS.split(',')
                                 ]



def random_color():
    random_number = random.randint(0, 16777215)
    hex_number = str(hex(random_number))
    hex_number = hex_number[2:].ljust(6, '0')
    return f'#{hex_number}'


def value_to_group(value):
    return {
        'color': random_color(),
        'name': value,
        'oql': {'or': [{'field': ['custom_Breadcrumb', 'equals', value]}]}
    }


def walk_dict(dictionary, level=0):
    ret = {
        "icon": "dashboard",
        "transposable": False,
        "name": "Breadcrumb"
    }

La règle étant maintenant définie, je peux lancer mon crawl et OnCrawl va automatiquement récupérer les valeurs du breadcrumb et les associer à chaque URL explorée.

Automatiser la création de la segmentation sur plusieurs niveaux avec Python

Maintenant que j’ai toutes les valeurs du fil d’ariane pour chaque URL, on va utiliser un script Python sur notre Google Colab pour créer automatiquement une segmentation compatible avec OnCrawl.

Pour le script en lui-même, on utilise 3 librairies qui sont :

  • json (Pour générer notre segmentation écrite en Json)
  • csv
  • random (Pour générer des codes couleurs hexadécimaux à chaque groupe)

Une fois le script lancé, il s’occupe automatiquement de créer la segmentation dans votre projet !

Aperçu des données dans les analyses

Maintenant que notre segmentation est créée, il est possible d’avoir accès aux différentes analyses tout en ayant une vue segmentée sur mon fil d’ariane.

Répartition des pages par groupe et par profondeur


Performances de ranking (GSC)


Fréquence de crawl Googlebot


Visites SEO et ratio de pages actives


Status code rencontrés par les Utilisateurs Vs Sessions SEO


Suivi des status codes rencontrés par Googlebot


Distribution de l’Inrank

Et voilà, on vient de créer automatiquement une segmentation grâce à un script Python et OnCrawl. Toutes les pages sont maintenant regroupées en fonction du fil d’ariane et ce sur 3 niveaux de profondeur :

L’avantage est de pouvoir monitorer les différents KPI (Crawl, profondeur, maillage interne, Crawl budget, SEO sessions, SEO visites, Ranking performances, Load Time) pour chaque groupe et sous-groupe de page.

Le futur du SEO avec OnCrawl

Vous vous dites sûrement que c’est bien d’avoir cette possibilité “Out of the box” mais vous n’avez pas forcément le temps de faire tout cela. La bonne nouvelle c’est que l’on travaille pour que cette fonctionnalité soit directement intégrée dans un futur proche.

Cela veut dire que vous serez bientôt capable de créer automatiquement une segmentation sur n’importe quel champ scrappé ou provenant de la Data Ingest en un simple clic. Et cela va vous faire gagner un temps fou, tout en vous permettant des analyses SEO croisées incroyables.

Imaginez que vous pouvez scraper n’importe quelle donnée du code source de vos pages ou intégrer n’importe quel KPI pour chaque URL. La seule limite est votre imagination !

On peut par exemple récupérer le prix de vente des produits et voir la profondeur, l’Inrank, les backlinks, le crawl budget en fonction du prix.

Mais on peut aussi récupérer le nom des auteurs de vos articles médias et voir ceux qui performent le mieux et appliquer les méthodes de rédaction qui fonctionnent le mieux.

On peut récupérer les avis, les notes de vos produits et voir si les meilleurs produits sont accessibles en un minimum de clics, reçoivent assez de liens, possèdent des backlinks, sont bien explorés par Googlebot, etc…

On peut intégrer vos données business comme le CA, la marge, le taux de conversion, vos dépenses Google Ads.

À vous maintenant d’imaginer comment vous pouvez croiser les données pour élargir vos analyses et prendre les bonnes décisions SEO.

Vous voulez tester la segmentation auto sur le fil d’ariane ? Contactez-nous sur la chatbox directement depuis votre compte 😉

🚀 Happy crawling!

Mickaël Serantes est Technical SEO Strategist chez OnCrawl. Après plusieurs années en agence à travailler pour de grands comptes, il s’est lancé en tant que Freelance avant de rejoindre le service Customer Success chez OnCrawl. Toujours en quête de découvertes, passionné par les technologies, il saura mettre son expérience au profit de votre stratégie SEO.
Sujets en lien :