Fini (enfin presque) le temps où il fallait attendre que le Googlebot crawle votre site, découvre vos nouvelles pages ou celles fraîchement mises à jour, puis procède à leur indexation. Initialement lancée en 2018, et réservée aux URLs d’offres d’emploi, l’API d’indexation de Google permet aux propriétaires de sites d’informer directement Google lorsqu’ils ont ajouté ou supprimé des pages sur leur site.
L’API d’indexation peut être utilisée pour :
- Mettre à jour les URLs dans l’index et maintenir les résultats de recherche à jour pour un trafic utilisateur de meilleure qualité.
- Supprimer les anciennes URLs ou les URLs inutiles de l’indexation.
- Envoyer des requêtes par lots pour réduire le nombre d’appels à l’API.
Comme vous le savez peut-être, dans Indexing API QuickStart, Google recommande d’utiliser l’API d’indexation plutôt qu’un sitemap, car par rapport aux sitemaps, l’API reçoit plus rapidement les demandes de mise à jour ou la publication d’une nouvelle page.
Dans cet article, nous allons voir comment utiliser Python pour élaborer un script permettant d’envoyer en masse les demandes d’indexation d’URL de votre site à Google et de demander à Google de crawler vos pages plus rapidement.
En plus, vous pouvez également utiliser ce script pour envoyer des requêtes pour les pages que vous avez mises à jour ou que vous souhaitez supprimer de Google.
Les bibliothèques dont nous aurons besoin
Afin de réaliser ce script en Python, nous utiliserons Google Colab et nous aurons également besoin des bibliothèques suivantes :
- oauth2client
- GoogleApiClient
- httplib2
- JSON
- Google Colab
- OS
Pour installer ces bibliothèques sur Google Colab, vous pouvez utiliser la commande suivante :
!pip install oauth2client
Si vous souhaitez installer les bibliothèques dans Windows, vous devrez saisir la commande suivante dans « Command Prompt » ou dans « Terminal » si vous utilisez MacOS :
pip install oauth2client
Utilisation des bibliothèques
Après l’installation des bibliothèques nécessaires, pour les utiliser et les appeler, vous devrez utiliser les codes suivants :
from oauth2client.service_account import ServiceAccountCredentials from googleapiclient.discovery import build from googleapiclient.http import BatchHttpRequest import httplib2 import json from google.colab import files import os
Préparation des URLs
Ensuite, nous devons copier nos URLs dans un fichier texte à partir duquel vous pourrez informer Google de vos modifications, nouvelles versions et pages supprimées. N’oubliez pas que vous êtes limité à 100 liens ou moins par jour lorsque vous utilisez l’API d’indexation. Le fichier texte doit ressembler à ceci :
Dans Google Colab, vous pouvez utiliser le code suivant pour télécharger et appeler le fichier texte correspondant à vos URLs :
uploaded_file = files.upload()
Après cela, nous devons créer un dictionnaire et préparer les URLs pour l’envoi de requêtes. Nous pouvons le faire en utilisant le code suivant :
list=[] for filename in uploaded_file.keys(): lines = uploaded_file[filename].splitlines() for line in lines: list.append(line.decode('utf-8')) requests ={} for i in list : requests[i]="URL_UPDATED" print(requests)
Il est nécessaire de mentionner que dans le code, pour la mise à jour ou la publication de nouveaux contenus, le dictionnaire nécessaire sera créé. Si vous avez besoin de supprimer des URLs, vous pouvez simplement utiliser la commande URL_DELETED
au lieu de URL_UPDATED
.
Création et activation de l’API d’indexation
La procédure de création et d’activation de l’API consiste à se rendre dans la Google Developer Console, puis à cliquer sur ‘Select a project’ et à choisir l’option ‘New project’ pour créer un nouveau projet.
Ensuite, vous aurez à choisir un nom pour votre projet et à cliquer sur ‘Create’.
Après avoir créé le projet, vous devrez le sélectionner dans la section projet du menu, puis sélectionner IAM & ADMIN dans le menu de gauche et enfin choisir ‘Service Accounts’.
Après cette étape, cliquez sur ‘Create service account’ et procédez à la création de votre compte. Dans la première rubrique, choisissez un nom pour votre compte, puis cliquez sur ‘Create and continue’. Une fois terminé, vous pouvez passer à la deuxième étape.
Dans le champ ‘Grant this service account access to project’, choisissez un rôle pour votre compte et assurez-vous de choisir ‘Owner’ dans le menu d’accès rapide, suivi de la section ‘Basic’. Ensuite, cliquez sur ‘Continue’ et dans l’étape suivante, vous n’aurez pas besoin de changer quoi que ce soit, cliquez simplement sur ‘Done’.
Sur la page ouverte, enregistrez l’adresse électronique qui se trouve dans le champ ‘Email’, car nous en aurons besoin plus tard. Cliquez sur ‘Actions’, puis sur ‘Manage Keys’.
Dans la page ouverte, depuis la section ‘Add Key’, cliquez sur ‘Create new key’, puis créez un fichier JSON et enregistrez le fichier téléchargé.
Il est temps d’activer l’API d’indexation ; pour ce faire, dans la section ‘API & Services’, cliquez sur ‘Enable APIs & services’.
Sur la page suivante, recherchez ‘Indexing API’. Une fois que vous l’avez sélectionnée, cliquez sur ‘Enable’ pour activer votre API.
L’ajout d’un courriel à Search Console
Pour utiliser l’API d’indexation, vous devez créer un compte d’accès à celle-ci dans la Google Search Console de votre site Web. Pour cela, vous devez ouvrir votre Google Search Console et, dans la section ‘Settings’, cliquez sur ‘Users and permissions’, puis ajoutez un nouvel utilisateur dans la section ‘Add user’. Lorsque la nouvelle page s’ouvre, saisissez le mail que vous avez enregistré précédemment et changez son autorisation en ‘Owner’.
Si vous n’avez pas enregistré votre e-mail, il vous suffit de retourner dans les comptes de service et de copier l’e-mail.
Votre e-mail devrait également se trouver dans le fichier JSON que vous avez téléchargé précédemment. Vous pouvez y accéder en ouvrant le fichier et en recherchant ‘client_email’.
[Étude de cas] Trouver et résoudre des problèmes d’indexation
Téléchargement du fichier JSON
Pour télécharger le fichier JSON dans Google Colab, vous pourrez utiliser le code suivant :
JsonKey = files.upload()
Ensuite, vous devrez trouver le chemin vers lequel les fichiers ont été téléchargés. Ceci peut être fait en utilisant la bibliothèque OS. Vous pouvez utiliser le code suivant et pour vous assurer que le fichier a été téléchargé, nous utilisons un ‘if’ au début :
if JsonKey: path_to_json = '/content' json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')] path = "/content/" + json_files[0]
L’autorisation des demandes
Comme vous le savez peut-être, Google a annoncé que l’utilisation de l’API d’indexation nécessite que notre programme et notre script utilisent OAuth 2.0 pour autoriser les demandes.
Pour utiliser OAuth 2.0 et envoyer des demandes, vous devez rechercher certaines informations. Pour les obtenir, nous utilisons le lien suivant de l’API d’indexation. Pour plus d’informations à ce sujet, vous pouvez vous reporter à la page Authorize Requests.
SCOPES = [ "https://www.googleapis.com/auth/indexing" ]
L’envoi de requêtes
Google a expliqué dans la page Using the Indexing API (Utilisation de l’API d’indexation) que pour envoyer des requêtes, nous devons utiliser un point de terminaison qui présente les conditions suivantes et les requêtes doivent être envoyées à l’aide de la méthode post :
Si vous voulez envoyer une seule demande :
ENDPOINT = "https://indexing.googleapis.com/v3/urlNotifications:publish"
Si vous voulez envoyer des demandes par batch :
ENDPOINT = "https://indexing.googleapis.com/batch"
Dans ce script, nous envoyons les requêtes une par une, mais la différence est que nous avons déjà créé un dictionnaire qui contient 100 URLs afin que toutes les requêtes soient envoyées en une seule fois.
Maintenant, nous devons créer les variables de ‘Authorize credentials’ et nous le faisons en utilisant la bibliothèque oauth2client et ServiceAccountCredentials pour créer les variables en utilisant les codes suivants :
credentials = ServiceAccountCredentials.from_json_keyfile_name(path,scopes=SCOPES) http = credentials.authorize(httplib2.Http())
Dans l’étape suivante, nous construisons des outils de service, puis une fonction. Après cela, nous traitons la requête finale. Pour plus d’informations sur le fonctionnement des codes, vous pouvez lire la page Class BatchHttpRequest.
Les codes finaux de cette section ressemblent à ce qui suit :
service = build('indexing', 'v3', credentials=credentials) def index_api(request_id, response, exception): if exception is not None: print(exception) else: print(response) if JsonKey: batch = service.new_batch_http_request(callback=index_api) for url, api_type in requests.items(): batch.add(service.urlNotifications().publish( body={"url": url, "type": api_type})) batch.execute()
Après avoir envoyé la demande, si tout a été fait correctement, les demandes seront imprimées comme dans l’exemple ci-dessous :
Vous pouvez consulter la version finale de Google Colab ici.
Conclusion
Python est un outil assez polyvalent qui peut aider à automatiser certaines tâches, il peut être utilisé pour extraire et analyser les données de votre site et, lorsqu’il est utilisé correctement, il peut aider à analyser et améliorer la façon dont nos sites sont crawlés et indexés. J’espère que vous pourrez faire bon usage de ce tutoriel la prochaine fois que vous utiliserez l’API de Google.
Bien que l’API soit encore réservée aux sites Web dont les pages se renouvellent rapidement, comme les sites d’offres d’emploi, elle reste un outil puissant. Et peut-être, qui sait, pourrait-elle être étendue à d’autres choses à l’avenir et ce tutoriel s’avérera encore plus utile.