Scraper Google Suggest gratuitement en 2 minutes avec Python

par | 17/01/2121

Python 3

Qu’est-ce que c’est que Google Suggests ?

Lorsqu’un internaute fait une recherche sur Google, le moteur de recherche génère automatiquement une série de suggestions pour compléter la requête : c’est un système d’autocomplete tout ce qu’il y a de plus classique qui s’appelle Google Suggests.

En matière de SEO, il nous permet d’identifier des requêtes associées et des tendances de recherche des internautes. Par exemple, pour le mot-clé consultant seo, Google propose :

  • consultant seo salaire
  • consultant seo freelance
  • consultant seo c’est quoi
  • consultant sea
  • consultant seo freelance salaire
  • consultant seo paris
  • consultant seo formation
  • consultant seo rennes

Vous pouvez faire le test chez vous en navigateur privé, vos résultats devraient être à peu près similaires. Notons cependant que ces résultats peuvent varier en fonction de votre localisation, si vous faites du SEO local, cela peut avoir son importance. Notons par ailleurs que les mots-clés suggérés le seront dans la langue détectée par Google, et non pas la localisation.

Pourquoi scraper Google Suggests ?

Certains diront que les mots-clés des requêtes suggérées par Google sont inutiles et ils n’ont pas tout à fait tort. De toute évidence, on ne construit pas une stratégie de contenu qualitative ou un plan d’article à partir de quelques mots-clés bazardés sur des requêtes auto-complétées… Mais c’est souvent une source d’inspiration, et dans certains cas vous pourrez mettre le doigt sur quelques requêtes bien spécifiques auxquelles vous n’auriez pas pensé sans l’outil. Notons par ailleurs que de fameux outils comme UberSuggest ou Keywordshitter sont basés sur Google Suggests.

Que vous soyez optimiste ou pas, c’est gratuit et ça prend 2 minutes, alors on tente le coup !

Scraper Google Suggests avec Python en 2 minutes

Prérequis

  • Python3
  • Module Requests (pip3 install requests ou python -m pip install requests)

Etape 1 : importer une liste de mots-clés à scraper

La première étape consiste à établir une liste de mots-clés pour lesquels on souhaite obtenir des suggestions. Vous pouvez par exemple vous baser sur la liste des mots-clés sur lesquels se positionne une page de votre site web grâce à Semrush, Ahrefs ou autre.

Quoi qu’il en soit, nous devons stocker cette liste de mots-clés dans un objet Python, il nous faut donc importer les mots-clés, à partir d’une liste de mots-clés séparés par un saut de ligne, un fichier texte ou encore un fichier CSV.

Pour notre exemple, nous utiliserons un fichier mots_cles.txt contenant une liste de mots-clés séparés par un saut de ligne.

import requests
import json


with open("mots_cles.txt","r") as f : # Ouverture du fichier en mode lecture (r -> read)
    f = f.read() # Lecture du fichier
    liste_mots_cles = f.splitlines() # Retourne une liste contenant chaque ligne du fichier

Remarque : pour notre exemple, le fichier python et mot_cles.txt sont dans le même dossier, mais vous pouvez aussi indiquer un chemin d’accès absolu.

Etape 2 : récupérer les suggestions de Google

D’abord, on définit une fonction qui prend comme input un mot clé, et qui retourne la liste de mots-clés suggérés par Google.

Pour ce faire on utilise une API de Google à cette adresse : http://suggestqueries.google.com/complete/search?client=firefox&q=

On envoie une requête HTTP GET à cette adresse en donnant au paramètre « p » la valeur du mot clé, et Google renvoie une liste de 8 mots clés recommandés en JSON.

def scrape(mot_cle) :
    req = requests.get("http://suggestqueries.google.com/complete/search?client=firefox&q=" + mot_cle) # Requête HTTP à l'API xml Google Suggests
    reqJson = json.loads(req.content.decode("latin-1")) # On décode la réponse de l'API en JSON
    return(reqJson[1]) # On renvoie la liste de mots-clés suggérés 

Etape 3 : scraper les mots-clés et enregistrer les suggestions

Une fois que la fonction est créée, il ne nous reste plus qu’à définir un comportement pour notre scraper. Pour notre exemple, on souhaite :

  • Qu’il scrape tous les mots-clés de notre liste
  • Qu’il enregistre toutes les suggestions dans un fichier.txt
fichierOutput = open("resultat.txt", "w+") # On ouvre le fichier resultat.txt en mode overwrite (on écrase le fichier précédent)

for mot_cle in liste_mots_cles : # On scrape chaque mot-clé dans la liste initiale
    print("-- Scrape : {}".format(mot_cle))
    resultat = scrape(mot_cle)

    for mot_cle2 in resultat : # On enregistre chaque suggestion dans un objet global
        print(mot_cle2)

        fichierOutput.write(mot_cle2 + "\n")

fichierOutput.close() # On ferme le fichier
print("Terminé !")

Et voilà, le tour est joué. Tous les mots-clés seront scrapés et les suggestions seront enregistrées à côté de votre script python dans le fichier resultat.txt (attention, le fichier sera écrasé à chaque execution du script).

Le code Python complet pour scraper Google Suggests

import requests
import json

with open("mots_cles.txt","r") as f : # Ouverture du fichier en mode lecture (r -> read)
    f = f.read() # Lecture du fichier
    liste_mots_cles = f.splitlines() # Retourne une liste contenant chaque ligne du fichier

def scrape(mot_cle) :
    req = requests.get("http://suggestqueries.google.com/complete/search?client=firefox&hl=fr&q=" + mot_cle) # Requête HTTP à l'API xml Google Suggests
    reqJson = json.loads(req.content.decode("latin-1")) # On décode la réponse de l'API en JSON
    return(reqJson[1]) # On renvoie la liste de mots-clés suggérés

# Pour chaque mot clé, on récupère les 8 suggestions

fichierOutput = open("resultat.txt", "w+") # On ouvre le fichier resultat.txt en mode overwrite (on écrase le fichier précédent)

for mot_cle in liste_mots_cles : # On scrape chaque mot-clé dans la liste initiale
    print("-- Scrape : {}".format(mot_cle))
    resultat = scrape(mot_cle)

    for mot_cle2 in resultat : # On enregistre chaque suggestion dans un objet global
        print(mot_cle2)

        fichierOutput.write(mot_cle2 + "\n")

fichierOutput.close() # On ferme le fichier
print("Terminé !")

J’ai essayé de garder un maximum de commentaires pour ceux parmi vous qui ne connaissent pas bien Python, en espérant que cela puisse vous aider à y voir plus clair.

En bonus : une alternative pour parser en XML

Si pour une raison X ou Y vous souhaitez parser les suggestions à partir d’un endpoint qui renvoie les données en XML, voilà la fonction qu’il vous faudra utiliser :

import xml.etree.ElementTree as ET

def scrape_xml(mot_cle) :
    req = requests.get("http://suggestqueries.google.com/complete/search?output=toolbar&hl=fr&q=" + mot_cle)
    tree = ET.fromstring(req.content.decode("latin-1"))
    suggestions = []
    for branch in tree.iter("suggestion") :
        suggestions.append(branch.attrib['data'])
    return(suggestions)

Pour ma part, j’ai trouvé l’endpoint XML avant celui en JSON, donc j’ai fait les deux fonctions… alors c’est cadeau !

Quelques idées pour aller plus loin

Ce script est très basique et ne tire pas un maximum de profit de Google Suggest. De nombreux outils utilisent Google Suggest intelligemment pour donner un résultat vraiment utile et facile d’utilisation, par exemple :

  • Keywordshitter : il scrape les suggestions pour les mots-clés donnés, puis les suggestions des suggestions, et ainsi de suite en boucle jusqu’à ce que les suggestions s’arrêtent.
  • AnswerThePublic : pour chaque mot clé, il scrape les suggestions pour chaque lettre de l’alphabet (malin !)
  • Semrush : recoupe et agrège dans son outil de suggestion de mots-clés

De manière à construire un outil vraiment puissant et intuitif, on pourrait aussi faire profit de tout un tas de techniques de visualisation de données, de traitement du langage naturel (NLP) ou encore recouper les suggestions avec d’autres sources de données, notamment les mots-clés positionnés et les volumes de recherche via semrush, majestic ou autres…

Si de bonnes idées vous viennent à l’esprit, laissez-moi un commentaire et on leur donnera vie dans un prochain article !

0 commentaires

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

D’autres articles qui pourront vous intéresser

Ensemble, donnons vie à vos projets.

Vous avez une idée, une question, un problème, une vision ou simplement besoin d’être conseillé ?