Data-driven-SEO-using-the-Oncrawl-API-with-Python-250px

Data driven SEO : l’utilisation de l’API Oncrawl avec Python (Part I)

9 janvier 2024 - 6  min de lecture - par Andreas Voniatis
Accueil > SEO Technique > Data driven SEO : l'API Oncrawl avec Python

L’API Oncrawl peut être utilisée pour mettre à l’échelle votre SEO data science, permettant ainsi aux SEOs de générer des recommandations techniques à la fois plus créatives et plus précises qui rendront le contenu de votre site web plus facile à découvrir et plus compréhensible pour les moteurs de recherche.

Avant que tout SEO basé sur les données (data driven SEO) soit possible, il faut se connecter à l’API et extraire les données, ce que nous montrons comment faire ci-dessous à l’aide de Python.

L’objectif est d’obtenir des données à partir des crawls que vous exécutez et de disposer ainsi d’une base sur laquelle effectuer de la data science pour obtenir des recommandations exploitables basées sur les données. Dans cet article, nous allons vous expliquer comment configurer et utiliser l’API d’Oncrawl.

L’obtention d’un token

Avant de commencer à coder, vous aurez besoin d’un token API. Vous pouvez l’obtenir en visitant la page des tokens, comme indiqué ci-dessous :

API Tokens Oncrawl

L’étape suivante consiste à cliquer sur Add API access token (ajouter un token d’accès à l’API) et de renseigner votre token d’API.

Importez des bibliothèques et définissez des paramètres

Vous pouvez maintenant commencer à coder ! Démarrez un nouveau notebook iPython dans Jupyter et importez les bibliothèques comme ci-dessous.

import requests 
import pandas as pd 
import numpy as np
import json 

Les requêtes vous permettront de faire des demandes à l’API.

Pandas vous permet de manipuler des data frames (données tabulaires), et ‘pd’ est l’abréviation de pandas lorsque vous utilisez leurs fonctions.

Numpy contient des fonctions permettant de manipuler des données avec l’abréviation np.

JSON permet de manipuler des données au format JSON, qui est commun aux résultats des données d’API.

api_token = 'your api key'  

Ce résultat a été obtenu précédemment (voir ci-dessus).

base_api = 'https://app.oncrawl.com/api/v2/'

Définissez l’URL de l’API de base pour vous éviter d’avoir à la retaper, car vous appellerez l’API plusieurs fois.

Listez vos projets

Avant de pouvoir extraire des données de votre crawl, vous devez connaître le numéro d’identification du crawl pour un appel ultérieur à l’API. Nous les extrairons en interrogeant le point final du projet.

endpoint = 'projects'

Ensuite, nous allons construire l’URL de la requête API en utilisant la fonction ‘get’ de la bibliothèque de requêtes importée plus tôt.

Comme vous le verrez, nous entrons l’URL de l’appel à l’API qui est construite sur la base_api et le point final. Les autres paramètres sont le token API pour autoriser l’appel API.

p_response = requests.get(base_api + endpoint,
                        headers={'Authorization': 'Bearer ' + api_token})

Les résultats de l’appel API sont stockés dans p_response. Nous pouvons maintenant lire la réponse à l’aide de la fonction JSON, extraire la partie « projets » de la réponse de l’API et la convertir au format dataframe, ce qui est plus facile à utiliser.

p_data = p_response.json()
projects_data = p_data['projects']
projects_df = pd.DataFrame(projects_data)
display(projects_df)

 

Crawl config ids

L’extrait du data frame répertorie tous les crawls du compte Oncrawl et les identifiants de crawl (crawl_ids), qui seront utilisés pour récupérer nos données de crawl.

Récupérez les champs

Après avoir sélectionné le crawl dont nous souhaitons obtenir des données, nous définissons l’identifiant du crawl, les données que nous recherchons sur l’URL, qui utilisent le type de données pages/champs, et le point final des données du crawl défini ci-dessous.

crawl_id = '654b7a5354749887a8a50b21'
data_type = 'pages/fields'
endpoint = 'data/crawl/'    

Bien entendu, avant d’obtenir les données proprement dites, nous devons savoir quels sont les champs disponibles.

Il sera transmis à la fonction ‘get’ de la requête, stocké sous forme de JSON et sauvegardé dans le fichier :

f_response = requests.get(base_api + endpoint + crawl_id + "/" + data_type,
                           headers={ 'Authorization': 'Bearer ' + api_token}).json()  

Une fois exécuté, le résultat ressemblera à ceci :

{'fields': [{'actions': ['has_no_value',
    'startswith',
    'contains',
    'endswith',
    'not_equals',
    'equals',
    'not_startswith',
    'has_value',
    'not_endswith',
    'not_contains'],
   'agg_dimension': True,
   'agg_metric_methods': ['value_count', 'cardinality'],
   'arity': 'one',
   'can_display': True,
   'can_filter': True,
   'can_sort': True,
   'category': 'HTML Quality',
   'name': 'alt_evaluation',
   'type': 'string',
   'user_select': True},
  {'actions': ['not_equals', 'equals'],
   'agg_dimension': True,

La sortie est incroyablement longue, si l’on considère que tout ce que nous souhaitons obtenir est le nom des champs (‘name’: ‘alt_evaluation’), afin que nous sachions quelles données extraire de notre crawl du site sélectionné.

Pour obtenir les noms des champs disponibles dans l’API Oncrawl (c’est-à-dire les caractéristiques de données des URLs), nous allons itérer à travers la sortie JSON produite par l’API.

Oncrawl API

Explorez, agrégez et exportez vos données Big Data pour les utiliser dans des solutions personnalisées à des fins commerciales et marketing. Gérez l’ensemble de vos projets et crawls et exportez vos données de logs et de crawls.

Pour ce faire, nous utiliserons une technique de codage Python connue sous le nom de ‘list comprehension’ (imaginez une boucle de recherche de 1 ligne) qui recherche simplement les noms et les stocke dans une nouvelle liste appelée api_fields.

api_fields = [field['name'] for field in f_response['fields']]
print(len(api_fields))
api_fields

809
['alt_evaluation',
 'canonical_evaluation',
 'canonicals',
 'cluster_canonical_status',
 'clusters',
 'depth',
 'description_evaluation',
 'description_hash',
 'description_is_optimized',
 'description_length',
 'description_length_range',
 'duplicate_description_status',
 'duplicate_evaluation',
 'duplicate_h1_status', …

Le résultat montre qu’il y a plus de 800 champs, c’est-à-dire des caractéristiques de données que nous pouvons extraire pour chaque URL dans notre crawl. Certains seront utilisés pour le filtrage, d’autres pour l’analyse proprement dite.

Obtenez des données du crawl

Avec l’identifiant de crawl, qui nous aide à retrouver le bon projet de crawl et les champs disponibles, nous sommes maintenant en mesure d’accéder aux données pour notre analyse.

En tant que SEO scientist, je préfère avoir des données illimitées parce que cela me permet de décider quels champs de données j’aimerais intégrer.

En effet, je peux décider quelles lignes je souhaite inclure ou rejeter lors de mon analyse des données. Nous allons donc ajouter ? Export=true à l’URL de l’appel API afin de lever la limite standard de 1 000 lignes.

Cela signifie que l’appel à l’API produira les données sous la forme d’un fichier CSV, mais il existe des options permettant d’acheminer les données vers une installation de stockage en nuage telle que AWS ou GCP.

Nous définirons le type de données à cet effet.

data_type = 'pages?export=true'

Effectuez ensuite l’appel dont le résultat sera sauvegardé dans une variable appelée c_response.

c_response = requests.post(base_api + endpoint + crawl_id + "/" + data_type,
                           headers={ 'Authorization': 'Bearer {}'.format(api_token)},
                           json={
                               "fields": ['url', 'indexable', 'inrank', 'nb_inlinks', 'status_code', 'title']
                           }
                          )

Une fois l’exécution terminée, nous devrons enregistrer le résultat localement sous forme d’un fichier csv :

with open('oncrawl_pages_data.csv', 'w') as f:
      f.write(c_response.text)

Prêt pour un peu de magie SEO

Vous êtes maintenant prêt pour la magie du SEO. Pour voir les données, il suffit d’utiliser la fonction de Pandas (abrégée en pd) read_csv :

oncrawl_pages_df = pd.read_csv('oncrawl_pages_data.csv', delimiter=';')
oncrawl_pages_df

Un extrait des données de crawl de l’API est présenté ci-dessous.

Extract of API crawl data

Bien sûr, il y a quelques étapes à franchir avant de pouvoir en tirer une analyse significative et des idées qui formeront la base de notre prochain article.

Dans le prochain article, j’appliquerai des techniques de data science pour examiner les données d’audit, ce qui permettra de formuler des recommandations techniques axées sur la science au service du SEO.

Andreas Voniatis Voir tous ses articles
Andreas Voniatis est un vétéran du SEO devenu data scientist et fondateur d'Artios, un cabinet de conseil en référencement pilotant la croissance organique de startups de premier plan. Il est également l'auteur de Data-Driven SEO, publié par Springer APress.
Sujets en lien :