Il y a de fortes chances que vous ayez utilisé l’un des outils les plus populaires tels que Ahrefs ou Semrush pour analyser les backlinks de votre site.

Ces outils parcourent le Web pour obtenir une liste de sites liés à votre site Web avec une évaluation de domaine et d’autres données décrivant la qualité de vos backlinks.

Ce n’est un secret pour personne que les backlinks jouent un grand rôle dans l’algorithme de Google, il est donc logique au minimum de comprendre votre propre site avant de le comparer à la concurrence.

Bien que l’utilisation d’outils vous donne un aperçu de mesures spécifiques, apprendre à analyser vous-même les backlinks vous donne plus de flexibilité quant à ce que vous mesurez et à la manière dont il est présenté.

Et bien que vous puissiez effectuer la plupart des analyses sur une feuille de calcul, Python présente certains avantages.

Outre le grand nombre de lignes qu’il peut gérer, il peut également examiner plus facilement le côté statistique, comme les distributions.

Dans cette colonne, vous trouverez des instructions étape par étape sur la façon de visualiser l’analyse de base des backlinks et de personnaliser vos rapports en tenant compte des différents attributs de lien à l’aide de Python.

Ne pas prendre place

Nous allons choisir un petit site Web du secteur du meuble au Royaume-Uni à titre d’exemple et effectuer une analyse de base à l’aide de Python.

Quelle est donc la valeur des backlinks d’un site pour le SEO ?

Au plus simple, je dirais qualité et quantité.

La qualité est subjective pour l’expert mais définitive pour Google au moyen de mesures telles que l’autorité et la pertinence du contenu.

Nous commencerons par évaluer la qualité du lien avec les données disponibles avant d’évaluer la quantité.

Il est temps de coder.

import re
import time
import random
import pandas as pd
import numpy as np
import datetime
from datetime import timedelta
from plotnine import *
import matplotlib.pyplot as plt
from pandas.api.types import is_string_dtype
from pandas.api.types import is_numeric_dtype
import uritools  
pd.set_option('display.max_colwidth', None)
%matplotlib inline

root_domain = 'johnsankey.co.uk'
hostdomain = 'www.johnsankey.co.uk'
hostname="johnsankey"
full_domain = 'https://www.johnsankey.co.uk'
target_name="John Sankey"

Nous commençons par importer les données et nettoyer les noms de colonnes pour les rendre plus faciles à manipuler et plus rapides à taper pour les étapes ultérieures.

target_ahrefs_raw = pd.read_csv(
    'data/johnsankey.co.uk-refdomains-subdomains__2022-03-18_15-15-47.csv')

Les compréhensions de liste sont un moyen puissant et moins intensif de nettoyer les noms de colonne.

target_ahrefs_raw.columns = [col.lower() for col in target_ahrefs_raw.columns]

La compréhension de la liste demande à Python de convertir le nom de la colonne en minuscules pour chaque colonne (« col ») dans les colonnes de la trame de données.

target_ahrefs_raw.columns = [col.replace(' ','_') for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace('.','_') for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace('__','_') for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace('(','') for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace(')','') for col in target_ahrefs_raw.columns]
target_ahrefs_raw.columns = [col.replace('%','') for col in target_ahrefs_raw.columns]

Bien que ce ne soit pas strictement nécessaire, j’aime avoir une colonne de comptage en standard pour les agrégations et une colonne de valeur unique « projet » si j’ai besoin de regrouper la table entière.

target_ahrefs_raw['rd_count'] = 1
target_ahrefs_raw['project'] = target_name
target_ahrefs_raw
analyse de backlink en python

Nous avons maintenant une base de données avec des noms de colonnes propres.

L’étape suivante consiste à nettoyer les valeurs réelles de la table et à les rendre plus utiles pour l’analyse.

Faites une copie de la trame de données précédente et donnez-lui un nouveau nom.

target_ahrefs_clean_dtypes = target_ahrefs_raw

Nettoyez la colonne dofollow_ref_domains, qui nous indique le nombre de domaines de référence du lien de site.

Dans ce cas, nous convertirons les tirets en zéros, puis convertirons la colonne entière en un nombre entier.

# referring_domains
target_ahrefs_clean_dtypes['dofollow_ref_domains'] = np.where(target_ahrefs_clean_dtypes['dofollow_ref_domains'] == '-',
                                                              0, target_ahrefs_clean_dtypes['dofollow_ref_domains'])
target_ahrefs_clean_dtypes['dofollow_ref_domains'] = target_ahrefs_clean_dtypes['dofollow_ref_domains'].astype(int)


# linked_domains
target_ahrefs_clean_dtypes['dofollow_linked_domains'] = np.where(target_ahrefs_clean_dtypes['dofollow_linked_domains'] == '-',
                                                           0, target_ahrefs_clean_dtypes['dofollow_linked_domains'])
target_ahrefs_clean_dtypes['dofollow_linked_domains'] = target_ahrefs_clean_dtypes['dofollow_linked_domains'].astype(int)

First_seen nous indique la date à laquelle le lien a été trouvé pour la première fois.

Nous allons convertir la chaîne en un format de date que Python peut traiter, puis l’utiliser pour dériver l’âge des liens ultérieurement.

# first_seen
target_ahrefs_clean_dtypes['first_seen'] = pd.to_datetime(target_ahrefs_clean_dtypes['first_seen'], format="%d/%m/%Y %H:%M")

Convertir first_seen en une date signifie également que nous pouvons effectuer des agrégations de temps par mois et par année.

C’est utile car ce n’est pas toujours le cas que les liens vers un site seront acquis quotidiennement, même si ce serait bien pour mon propre site si c’était le cas !

target_ahrefs_clean_dtypes['month_year'] = target_ahrefs_clean_dtypes['first_seen'].dt.to_period('M')

L’âge du lien est calculé en prenant la date d’aujourd’hui et en soustrayant la date de la première vue.

Ensuite, il est converti en un format numérique et divisé par un nombre énorme pour obtenir le nombre de jours.

# link age
target_ahrefs_clean_dtypes['link_age'] = datetime.datetime.now() - target_ahrefs_clean_dtypes['first_seen']
target_ahrefs_clean_dtypes['link_age'] = target_ahrefs_clean_dtypes['link_age']
target_ahrefs_clean_dtypes['link_age'] = target_ahrefs_clean_dtypes['link_age'].astype(int)
target_ahrefs_clean_dtypes['link_age'] = (target_ahrefs_clean_dtypes['link_age']/(3600 * 24 * 1000000000)).round(0)
target_ahrefs_clean_dtypes

analyse des backlinks données ahrefs

Une fois les types de données nettoyés et de nouvelles fonctionnalités de données créées, le plaisir peut commencer !

Qualité du lien

La première partie de notre analyse évalue la qualité des liens, qui résume l’ensemble de la trame de données à l’aide de la fonction describe pour obtenir des statistiques descriptives de toutes les colonnes.

target_ahrefs_analysis = target_ahrefs_clean_dtypes
target_ahrefs_analysis.describe()

table de données de backlink python

Ainsi, à partir du tableau ci-dessus, nous pouvons voir la moyenne (moyenne), le nombre de domaines référents (107) et la variation (le 25e centile et ainsi de suite).

La note de domaine moyenne (équivalente à l’autorité de domaine de Moz) des domaines référents est de 27.

Est-ce une bonne chose?

En l’absence de données concurrentes à comparer dans ce secteur de marché, il est difficile de le savoir. C’est là qu’intervient votre expérience en tant que praticien SEO.

Cependant, je suis certain que nous pourrions tous convenir qu’il pourrait être plus élevé.

Combien plus élevé pour faire un changement est une autre question.

évaluation du domaine au fil des ans

Le tableau ci-dessus peut être un peu sec et difficile à visualiser, nous allons donc tracer un histogramme pour obtenir une compréhension intuitive de l’autorité du domaine référent.

dr_dist_plt = (
    ggplot(target_ahrefs_analysis, aes(x = 'dr')) + 
    geom_histogram(alpha = 0.6, fill="blue", bins = 100) +
    scale_y_continuous() +   
    theme(legend_position = 'right'))
dr_dist_plt
graphique à barres des données de lien

La distribution est fortement asymétrique, ce qui montre que la plupart des domaines référents ont une cote d’autorité de zéro.

Au-delà de zéro, la distribution semble assez uniforme, avec un nombre égal de domaines à différents niveaux d’autorité.

L’âge des liens est un autre facteur important pour le référencement.

Voyons la distribution ci-dessous.

linkage_dist_plt = (
    ggplot(target_ahrefs_analysis, 
           aes(x = 'link_age')) + 
    geom_histogram(alpha = 0.6, fill="blue", bins = 100) +
    scale_y_continuous() +   
    theme(legend_position = 'right'))
linkage_dist_plt
graphique à barres pour l'âge du lien

La distribution semble plus normale même si elle est encore biaisée, la majorité des liens étant nouveaux.

L’âge de lien le plus courant semble être d’environ 200 jours, soit moins d’un an, ce qui suggère que la plupart des liens ont été acquis récemment.

Par intérêt, voyons comment cela est en corrélation avec l’autorité de domaine.

dr_linkage_plt = (
    ggplot(target_ahrefs_analysis, 
           aes(x = 'dr', y = 'link_age')) + 
    geom_point(alpha = 0.4, colour="blue", size = 2) +
    geom_smooth(method = 'lm', se = False, colour="red", size = 3, alpha = 0.4)
)

print(target_ahrefs_analysis['dr'].corr(target_ahrefs_analysis['link_age']))
dr_linkage_plt

0.1941101232345909
tableau de données de l'âge du lien

Le graphique (ainsi que le chiffre de 0,19 imprimé ci-dessus) ne montre aucune corrélation entre les deux.

Et pourquoi devrait-il y en avoir ?

Une corrélation impliquerait seulement que les liens d’autorité supérieure ont été acquis dans la première phase de l’histoire du site.

La raison de la non-corrélation deviendra plus évidente plus tard.

Nous allons maintenant examiner la qualité du lien au fil du temps.

Si nous devions littéralement tracer le nombre de liens par date, la série chronologique aurait l’air plutôt désordonnée et moins utile, comme indiqué ci-dessous (aucun code fourni pour rendre le graphique).

Pour ce faire, nous calculerons une moyenne mobile du Domain Rating par mois de l’année.

Notez la fonction expand(), qui demande à Pandas d’inclure toutes les lignes précédentes avec chaque nouvelle ligne.

target_rd_cummean_df = target_ahrefs_analysis
target_rd_mean_df = target_rd_cummean_df.groupby(['month_year'])['dr'].sum().reset_index()
target_rd_mean_df['dr_runavg'] = target_rd_mean_df['dr'].expanding().mean()
target_rd_mean_df
calculer une moyenne mobile de l'évaluation du domaine

Nous avons maintenant une table que nous pouvons utiliser pour alimenter le graphique et le visualiser.

dr_cummean_smooth_plt = (
    ggplot(target_rd_mean_df, aes(x = 'month_year', y = 'dr_runavg', group = 1)) + 
    geom_line(alpha = 0.6, colour="blue", size = 2) +
    scale_y_continuous() +
    scale_x_date() +
    theme(legend_position = 'right', 
          axis_text_x=element_text(rotation=90, hjust=1)
         ))
dr_cummean_smooth_plt
visualiser la note moyenne cumulée du domaine

C’est assez intéressant car il semble que le site ait commencé à attirer des liens de haute autorité au début de son époque (probablement une campagne de relations publiques lançant l’entreprise).

Il s’est ensuite estompé pendant quatre ans avant de reprendre avec un nouveau lien l’acquisition de liens de haute autorité à nouveau.

Volume de liens

Ça sonne bien rien qu’en écrivant ce titre !

Qui ne voudrait pas d’un gros volume de (bons) liens vers son site ?

La qualité est une chose; le volume en est un autre, c’est ce que nous analyserons ensuite.

Tout comme l’opération précédente, nous utiliserons la fonction d’expansion pour calculer une somme cumulée des liens acquis à ce jour.

target_count_cumsum_df = target_ahrefs_analysis
target_count_cumsum_df = target_count_cumsum_df.groupby(['month_year'])['rd_count'].sum().reset_index()
target_count_cumsum_df['count_runsum'] = target_count_cumsum_df['rd_count'].expanding().sum()
target_count_cumsum_df
calcul de la somme cumulée des liens

Ce sont les données, maintenant le graphique.

target_count_cumsum_plt = (
    ggplot(target_count_cumsum_df, aes(x = 'month_year', y = 'count_runsum', group = 1)) + 
    geom_line(alpha = 0.6, colour="blue", size = 2) +
    scale_y_continuous() + 
    scale_x_date() +
    theme(legend_position = 'right', 
          axis_text_x=element_text(rotation=90, hjust=1)
         ))
target_count_cumsum_plt
graphique linéaire de la somme cumulée des liens

Nous voyons que les liens acquis au début de 2017 ont ralenti mais se sont régulièrement ajoutés au cours des quatre années suivantes avant d’accélérer à nouveau vers mars 2021.

Encore une fois, il serait bon de corréler cela avec les performances.

Aller plus loin

Bien sûr, ce qui précède n’est que la pointe de l’iceberg, car il s’agit d’une simple exploration d’un site. Il est difficile de déduire quoi que ce soit d’utile pour améliorer le classement dans les espaces de recherche concurrentiels.

Vous trouverez ci-dessous quelques domaines pour une exploration et une analyse plus approfondies des données.

  • Ajouter des données de partage sur les réseaux sociaux aux deux URL de destination.
  • Corréler la visibilité globale du site avec le DR moyen courant heures supplémentaires.
  • Tracer la distribution de DR heures supplémentaires.
  • Ajout de données de volume de recherche sur les noms d’hôte pour voir combien de recherches de marque les domaines référents reçoivent comme mesure de la véritable autorité.
  • Joindre avec des données de crawl aux URL de destination pour tester la pertinence du contenu.
  • Vitesse de liaison – la vitesse à laquelle de nouveaux liens provenant de nouveaux sites sont acquis.
  • Intégrer toutes les idées ci-dessus dans votre analyse pour vous comparer à vos concurrents.

Je suis certain qu’il y a beaucoup d’idées non listées ci-dessus, n’hésitez pas à les partager ci-dessous.

Davantage de ressources:

  • Python SEO Script : meilleures opportunités de mots clés à portée de main
  • Une introduction à Python et à l’apprentissage automatique pour le référencement technique
  • Guide de création de liens : comment acquérir et gagner des liens qui boostent votre référencement

Image en vedette : metamorworks/Shutterstock

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici