Suivez-nous sur Google News pour ne rien rater de l'actu SEO

Google étant le plus grand moteur de recherche, il contient naturellement des quantités incommensurables d’informations utiles. Cependant, si vous devez récupérer automatiquement et à grande échelle les données de recherche Google, vous risquez de rencontrer certaines difficultés.

Dans l’article d’aujourd’hui, nous explorerons quelles sont exactement ces difficultés, comment les surmonter et réussir à extraire les résultats de recherche Google à grande échelle.

Qu’est-ce qu’une SERP Google ?

Lors de toute discussion sur la suppression des résultats de recherche Google, vous rencontrerez probablement l’abréviation « SERP ». SERP signifie Page de résultats du moteur de recherche ; c’est la page que vous obtenez après avoir saisi une requête dans la barre de recherche. À l’époque, Google renvoyait une liste de liens pour votre requête. Aujourd’hui, la situation est complètement différente : pour rendre votre expérience de recherche rapide et pratique, les SERP contiennent diverses fonctionnalités et éléments. Il en existe un certain nombre, alors jetons un coup d’œil aux plus importants.

  1. Extraits en vedette
  2. Annonces payantes
  3. Carrousel vidéo
  4. PAA
  5. Pack local
  6. Recherches associées

La légalité du scraping des données de recherche Google est largement discutée dans le domaine du scraping. En fait, la récupération de données accessibles au public sur Internet – y compris les données Google SERP – est légale. Cependant, cela peut varier d’une situation à l’autre, il est donc préférable de demander un avis juridique sur votre cas spécifique.

Scraping de recherche Google : les difficultés 

Comme indiqué au début de cet article, récupérer les données des résultats de recherche Google n’est pas facile. Google a mis en place plusieurs techniques pour empêcher les robots malveillants de récolter ses données. C’est ici que les problèmes commencent : comme il est difficile de faire la différence entre un robot malveillant et un robot non malveillant, ce dernier est également signalé. En d’autres termes, même si votre scraper ne constitue pas une menace, il peut quand même être interdit.

Examinons de plus près les difficultés liées au scraping des résultats de recherche publics de Google.

1. CAPTCHA

L’invite CAPTCHA est la façon dont Google différencie les vrais utilisateurs des robots. Les tests sont difficiles à réaliser pour les robots, mais les humains peuvent les réaliser relativement facilement. Si le visiteur ne parvient pas à compléter le CAPTCHA après quelques essais, cela entraîne souvent des blocages IP. Heureusement, les outils avancés de web scraping, tels que SERP API, sont capables de gérer les CAPTCHA sans blocage.

2. Blocages IP 

Chaque fois que vous faites quelque chose en ligne, votre adresse IP est visible sur les sites Web que vous visitez. Lorsque vous récupérez des données Google SERP (ou des données de tout autre site Web), celui-ci reçoit un nombre massif de demandes. Le site Web peut considérer cela comme une activité suspecte et, par conséquent, bannir votre adresse IP, empêchant ainsi le visiteur d’y accéder à nouveau.

3. Données désorganisées 

L’intérêt de collecter des données Google à grande échelle est de les analyser et d’obtenir des informations. Par exemple, avec les données de Google à grande échelle, vous pouvez élaborer une solide stratégie d’optimisation des moteurs de recherche.

Cependant, pour pouvoir analyser les données des résultats de recherche, celles-ci doivent être bien organisées et faciles à lire. Cela dit, votre outil de collecte de données doit pouvoir les restituer dans un format structuré – JSON ou CSV, par exemple.

En gardant ces défis à l’esprit, vous aurez besoin d’un outil de web scraping avancé capable de tous les surmonter. L’API de recherche Google est conçue pour contourner les défis techniques mis en œuvre par Google. Il fournit en douceur des résultats de recherche publics sur Google sans que les utilisateurs aient à s’occuper de la maintenance du scraper.

En fait, il suffit de quelques étapes pour extraire les résultats de recherche avec notre SERP API – examinons ce processus de plus près.

Récupérer les résultats de recherche Google publics avec Python à l’aide de notre API

1. Installez les bibliothèques Python requises

Pour suivre ce guide sur la récupération des résultats de recherche Google, vous aurez besoin des éléments suivants :

  • Vos identifiants de connexion à votre outil préféré

  • Python

  • Bibliothèque de requêtes

Tout d’abord, inscrivez-vous à un outil de scrap API et enregistrez votre nom d’utilisateur et votre mot de passe. Tout au long de ce guide, vous verrez les entités nom d’utilisateur et mot de passe – ce sont les endroits où vous devrez insérer vos propres informations d’identification.

Ensuite, téléchargez et installez Python 3.8 ou supérieur à partir du site Web python.org .

Enfin, installez la bibliothèque Request, qui est une bibliothèque Python tierce populaire pour effectuer des requêtes HTTP. La bibliothèque Request dispose d’une interface simple et intuitive pour envoyer des requêtes HTTP aux serveurs Web et recevoir des réponses.

Pour installer cette bibliothèque, utilisez la commande suivante :

$python3 -m pip install requests 

Si vous utilisez Windows, choisissez Python au lieu de Python3. Le reste de la commande reste le même :

d:\amazon>python -m pip install requests

2. Configurez une charge utile et envoyez une requête POST

Créez un nouveau fichier et entrez le code suivant :

import requests
from pprint import pprint

payload = {
    'source': 'google',
    'url': 'https://www.google.com/search?hl=en&q=newton'  # search for newton
}

response = requests.request(
    'POST',
    'https://xxx.com/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

pprint(response.json())

Voici à quoi devrait ressembler le résultat :

{
    "results": [
        {
            "content": "<!doctype html><html>...</html>",
            "created_at": "YYYY-DD-MM HH:MM:SS",
            "updated_at": "YYYY-DD-MM HH:MM:SS",
            "page": 1,
            "url": "https://www.google.com/search?hl=en&q=newton",
            "job_id": "1234567890123456789",
            "status_code": 200
        }
    ]
}

Remarquez comment l’ URL dans le dictionnaire de charge utile est une page de résultats de recherche Google. Dans cet exemple, le mot-clé est newton .

Comme vous pouvez le constater, la requête est exécutée et le résultat de la page en HTML est renvoyé dans la clé de contenu de la réponse.

Personnalisation des paramètres de requête

Passons en revue le dictionnaire de charge utile de l’exemple ci-dessus pour récupérer les données de recherche Google.

payload = {
    'source': 'google',
    'url': 'https://www.google.com/search?hl=en&q=newton'
}

Les clés du dictionnaire sont des paramètres utilisés pour informer l’API Google Scraper de la personnalisation requise.

Le premier paramètre est le source , ce qui est très important car il définit le scraper que nous allons utiliser.

La valeur par défaut est Google – lorsque vous l’utilisez, vous pouvez définir l’URL comme n’importe quelle page de recherche Google, et tous les autres paramètres seront extraits de l’URL.

Bien que dans ce guide nous utiliserons le paramètre google_search , il en existe bien d’autres :  google_ads , google_hotels , google_images , google_suggest , etc.

Gardez à l’esprit que si vous définissez la source sur google_search , vous ne pouvez pas utiliser le paramètre url . Heureusement, vous pouvez utiliser plusieurs paramètres différents pour acquérir des données publiques Google SERP sans avoir à créer plusieurs URL. Découvrons-en davantage sur ces paramètres, d’accord ?

Paramètres de base

Nous allons créer la charge utile en ajoutant les paramètres un par un. Tout d’abord, commencez par définir la source sur google_search .

payload = {
    'source': 'google_search',
}

Maintenant, ajoutons une requête – un paramètre crucial qui détermine les résultats de recherche que vous récupérerez. Dans notre exemple, nous utiliserons newton comme requête de recherche. À ce stade, le dictionnaire de données utiles ressemble à ceci :

payload = {
    'source': 'google_search',
    'query': 'newton',
}

Cela dit, google_search et query sont les deux paramètres essentiels pour récupérer les données de recherche publiques de Google. Si vous souhaitez que l’API renvoie les résultats de recherche Google à ce stade, vous pouvez utiliser la charge utile. Passons maintenant au paramètre suivant.

Paramètres de requête de localisation

Vous pouvez travailler avec un paramètre de domaine si vous souhaitez utiliser un domaine localisé – par exemple, ‘domain’:’de’ récupérera les résultats de google.de. Si vous souhaitez voir les résultats de la France, utilisez le paramètre geo_location— ‘geo_location’:’France’ . Voici également à quoi ressemble la modification du paramètre locale :

payload = {
'source':'google_search',
'query':'newton',
'domain':'fr' ,
'geo_location': 'France',
'locale' : 'fr'
}

Si vous envoyez la charge utile ci-dessus, vous recevrez des résultats de recherche en anglais américain de google.fr, comme le ferait toute personne physiquement située en France.

Contrôler le nombre de résultats

Par défaut, vous verrez les dix premiers résultats de la première page. Si vous souhaitez personnaliser cela, vous pouvez utiliser ces paramètres : start_page , pages et limit .

Le paramètre start_page détermine quelle page de résultats de recherche renvoyer. Le paramètre pages spécifie le nombre de pages. Enfin, le paramètre limit définit le nombre de résultats sur chaque page.

Par exemple, l’ensemble de paramètres suivant récupère les résultats des pages 11 et 12 des résultats du moteur de recherche, avec 20 résultats sur chaque page :

payload = {
    'start_page': 11,
    'pages': 2,
    'limit': 20,
    ...  # other parameters
}

Outre les paramètres de recherche que nous avons abordés jusqu’à présent, vous pouvez en utiliser quelques autres pour affiner vos résultats.

Code Python pour récupérer les données de recherche Google

Maintenant, rassemblons tout ce que nous avons appris jusqu’à présent – ​​voici à quoi ressemble le script final avec le mot-clé chaussures :

import requests
from pprint import pprint
payload = {
    'source': 'google_search',
    'query': 'chaussures',
    'domain': 'fr',
    'geo_location': 'France',
    'locale': 'fr',
    'parse': True,
    'start_page': 1,
    'pages': 5,
    'limit': 10,
}


# Get response.
response = requests.request(
    'POST',
    'https://xxx.com/',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)


if response.status_code != 200:
    print("Error - ", response.json())
    exit(-1)


pprint(response.json())

3. Exportez les données récupérées vers un CSV

L’une des meilleures fonctionnalités de l’API est la possibilité d’analyser une page HTML en JSON. Pour cela, vous n’avez pas besoin d’utiliser BeautifulSoup ou toute autre bibliothèque – envoyez simplement le paramètre d’analyse comme True.

Voici un exemple de charge utile :

payload = {
    'source': 'google_search',
    'query': 'adidas',
    'parse': True,
}

Lorsqu’elle est envoyée à l’API Google Scraper, cette charge utile renverra les résultats au format JSON. Pour voir une structure de données JSON détaillée, consultez notre documentation .

Les points forts :

  • Les résultats sont dans la liste des résultats dédiée. Ici, chaque page reçoit une nouvelle entrée.

  • Chaque résultat contient le contenu dans une clé de dictionnaire nommée content .

  • Les résultats réels se trouvent dans la clé des résultats.

  • Notez qu’il y a un job_id dans les résultats.

Le moyen le plus simple de sauvegarder les données consiste à utiliser la bibliothèque Pandas, car elle peut normaliser JSON de manière assez efficace.

import pandas as pd
...
data = response.json()
df = pd.json_normalize(data['results'])
df.to_csv('export.csv', index=False)

Alternativement, vous pouvez également prendre note du job_id et envoyer une requête GET à l’URL suivante, avec vos informations d’identification.

Gestion des erreurs et des exceptions

Lors du scraping de Google, vous pouvez rencontrer plusieurs défis : problèmes de réseau, paramètres de requête non valides ou limitations de quota d’API.

Pour les gérer, vous pouvez utiliser des blocs try-sauf dans votre code. Par exemple, si une erreur se produit lors de l’envoi de la requête API, vous pouvez intercepter l’exception et imprimer un message d’erreur :

try:
    response = requests.request(
        'POST',
        'https://xxx.com/v1/queries',
        auth=('USERNAME', 'PASSWORD'),
        json=payload,
    )
except requests.exceptions.RequestException as e:
    print("Error:", e)

Si vous envoyez un paramètre non valide, l’API Google Scraper renverra le code de réponse 400.

Pour détecter ces erreurs, vérifiez le code d’état :

if response.status_code != 200:
    print("Error - ", response.json())

Dans la même catégorie :