Retour au blog
Guides
Andrei Ogiolan20 avril 20239 minutes de lecture

Comment extraire les résultats de recherche de lieux sur Google Maps

Comment extraire les résultats de recherche de lieux sur Google Maps

Introduction

Google Maps est l'un des services de cartographie et de navigation les plus utilisés au monde. Il offre aux utilisateurs un moyen simple de trouver et d'explorer des lieux, des commerces et des points d'intérêt. L'une des fonctionnalités clés de Google Maps est la possibilité de rechercher des lieux et d'afficher des informations détaillées à leur sujet, telles que leur emplacement, les avis, les photos, etc.

L'extraction de ces données depuis Google Maps peut s'avérer utile à diverses fins. Par exemple, les entreprises peuvent utiliser ces données pour suivre et analyser les performances de leurs établissements, les chercheurs peuvent s'en servir pour étudier les tendances du comportement des consommateurs, et les particuliers peuvent les utiliser pour trouver et explorer de nouveaux lieux.

L'objectif de cet article est de vous fournir un guide étape par étape sur la manière d'extraire les résultats de recherche de lieux sur Google Maps à l'aide de notre API et de Node.js. Nous aborderons tous les aspects, de la configuration de l'environnement de développement à l'extraction des données pertinentes, et nous décrirons les problèmes potentiels. À la fin de cet article, vous disposerez des connaissances et des outils nécessaires pour extraire vous-même les résultats de recherche de lieux sur Google Maps.

Pourquoi utiliser un scraper professionnel plutôt que de créer le vôtre ?

L'utilisation d'un scraper professionnel peut être une meilleure option que de créer le vôtre pour plusieurs raisons. Tout d'abord, les scrapers professionnels sont conçus pour gérer une grande variété de tâches de scraping et sont optimisés pour la performance, la fiabilité et l'évolutivité. Ils sont conçus pour traiter de grandes quantités de données et peuvent gérer divers types de sites web et de technologies web. Cela signifie que les scrapers professionnels peuvent souvent extraire des données plus rapidement et avec plus de précision qu'un scraper sur mesure.

De plus, les scrapers professionnels sont souvent dotés de fonctionnalités intégrées telles que la résolution de CAPTCHA, la rotation d'adresses IP et la gestion des erreurs, ce qui peut rendre le processus de scraping plus efficace et moins sujet aux erreurs. Ils offrent également une assistance et une documentation qui peuvent s'avérer utiles en cas de problème.

Un autre aspect important est que les fournisseurs de scrapers professionnels respectent les politiques de scraping des sites web qu'ils exploitent et peuvent garantir une utilisation légale des données, ce qu'il est important de garder à l'esprit lors du scraping de données.

Enfin, dans notre cas particulier, pour extraire les résultats de lieux de Google Maps, vous devez transmettre un paramètre de données à votre URL Google comme ceci :

https://www.google.com/maps/place/Waldo+Pizza/@43.821489,-43.4299553,3z/data=!4m5!3m4!1s0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e!8m2!3d38.9930011!4d-94.5936805

Le paramètre data se présente généralement sous la forme suivante : !4m5!3m4!1s + data_id + !8m2!3 + latitude + !4d + longitude. Je sais que cela peut sembler intimidant au premier abord, car vous ne savez peut-être pas comment obtenir la propriété data_id pour un lieu spécifique, et vous avez raison, car Google cache cette information et elle n'est pas visible sur la page lorsque vous recherchez un lieu dans Google Maps. Mais, heureusement, l'utilisation d'un scraper professionnel comme le nôtre s'en charge en trouvant ces données pour vous. Nous verrons dans les sections suivantes comment obtenir le data_id, les coordonnées et comment créer facilement le paramètre de données.

Définir notre cible

Que sont les résultats de lieux Google Maps ?

Les résultats de recherche de lieux sur Google Maps sont les résultats qui s'affichent lorsqu'un utilisateur recherche un lieu sur Google Maps. Ces résultats peuvent inclure des lieux tels que des entreprises, des restaurants, des hôtels, des sites touristiques et d'autres points d'intérêt. Chaque résultat de recherche de lieu comprend des informations telles que le nom du lieu, son adresse, son numéro de téléphone, son site web, des avis et des photos. Les résultats de recherche de lieux incluent également une image Street View de l'emplacement sur Google Maps, ainsi qu'une carte indiquant l'emplacement du lieu. Les résultats de recherche peuvent également inclure un lien vers la page Google My Business du lieu.

Lorsqu'un utilisateur recherche un lieu sur Google Maps, une liste de résultats correspondant à sa requête s'affiche. Ces résultats sont présentés sur la carte et sous forme de liste, et peuvent être filtrés selon divers critères tels que la note, le prix et la distance.

L'extraction de ces données peut être utile pour les entreprises qui souhaitent suivre et analyser les performances de leurs établissements, pour les chercheurs qui souhaitent étudier les tendances du comportement des consommateurs, et pour les particuliers qui souhaitent découvrir et explorer de nouveaux lieux.

À quoi ressemble notre cible ?

Google Maps place listing sidebar next to a map with pins, highlighting a specific restaurant location

Mise en place

Avant de pouvoir commencer à extraire les résultats de lieux de Google Maps, nous devons nous assurer de disposer des outils nécessaires. La première chose dont nous aurons besoin est Node.js, un environnement d'exécution JavaScript qui nous permet d'exécuter du code JavaScript côté serveur et que vous pouvez installer depuis leur site web officiel. La deuxième chose dont vous avez besoin est une clé API, que vous pouvez obtenir facilement en créant un compte ici et en activant le service SERP.

Une fois ces éléments configurés, pour exécuter un script Node.js, il vous suffit de créer un fichier js. Vous pouvez le faire en exécutant la commande suivante :

$ touch scraper.js 

Collez ensuite la ligne suivante dans votre fichier :

console.log("Hello World!")

Puis exécutez la commande suivante :

$ node scraper.js

Si le message « Hello World ! » s'affiche désormais sur le terminal, cela signifie que vous avez correctement installé Node.js et que vous êtes prêt à passer à la dernière étape.

La dernière étape consiste à récupérer les informations data_id concernant le lieu qui vous intéresse. C'est là que notre API entre en jeu. Son utilisation est très simple et ne nécessite l'installation d'aucune bibliothèque externe.

Tout d'abord, dans un fichier js, vous devez importer le module intégré Node.js `https` afin de pouvoir envoyer des requêtes à notre API. Pour ce faire, procédez comme suit :

​​const https = require("https");

Ensuite, vous devez spécifier votre clé API, un terme de recherche et les coordonnées du lieu qui vous intéresse :

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const query = "Waldo%20Pizza"

const coords = "@38.99313451901278,-94.59368586441806"

Il vous suffit ensuite de transmettre ces informations dans un objet options afin que notre API comprenne de quel lieu vous souhaitez extraire des informations :

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=search&q=${query}&ll=${coords}`,

  "headers": {}

};

Ensuite, vous devez configurer un appel à notre API avec toutes ces informations :

const req = https.request(options, function (res) {

 const chunks = [];

 res.on("data", function (chunk) {

   chunks.push(chunk);

 });

 res.on("end", function () {

   const body = Buffer.concat(chunks);

   const response = JSON.parse(body.toString());

   const data_id = response.place_results.data_id;

   if (data_id) {

       console.log(data_id);

   }

   else {

       console.log('We could not find a data_id property for your query. Please try using another query')

   }

 });

});

req.end();

Enfin, il vous suffit d'exécuter le script que vous avez créé et d'attendre les résultats :

​​$ node scraper.js

Vous devriez alors voir s'afficher la propriété data_id à l'écran :

$ ​​0x87c0ef253b04093f:0xafdfd6dc1d3a2b4es

Et voilà, vous disposez désormais de tout ce dont vous avez besoin pour créer le paramètre data et vous êtes prêt à passer à la section suivante, qui présente l'objectif de cet article.

Commençons à extraire les résultats de Google Places

Maintenant que votre environnement est configuré, vous êtes prêt à commencer à extraire les résultats de Google Maps avec Node.js. Comme mentionné plus haut, pour extraire les résultats de Google Maps, vous devez maintenant configurer le paramètre data. Tout étant désormais disponible, vous pouvez procéder comme suit :

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

const data = '!4m5!3m4!1s' + data_id + '!8m2!3d' + latitude  + '!4d' + longitude

Vous devez maintenant modifier votre objet options pour indiquer à notre API que vous recherchez des résultats de lieux. Grâce à ce nouveau paramètre de données, notre API saura exactement sur quel lieu vous souhaitez extraire des informations :

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=place&data=${data}`, // this time the type is place and there is no query needed

  "headers": {}

};

Le script obtenu devrait ressembler à ceci :

const https = require("https");

const API_KEY = "<YOUR-API-KEY-HERE>" // You can get by creating an account - https://app.webscrapingapi.com/register

const data_id = "0x87c0ef253b04093f:0xafdfd6dc1d3a2b4e" // the data_id we retrieved earlier

const latitude = '38.99313451901278'

const longitude = '-94.59368586441806'

const data = '!4m5!3m4!1s' + data_id + '!8m2!3d' + latitude  + '!4d' + longitude

const options = {

  "method": "GET",

  "hostname": "serpapi.webscrapingapi.com",

  "port": null,

  "path": `/v1?engine=google_maps&api_key=${API_KEY}&type=place&data=${data}`, // this time the type is place and there is no query needed

  "headers": {}

};

const req = https.request(options, function (res) {

  const chunks = [];

  res.on("data", function (chunk) {

    chunks.push(chunk);

  });

  res.on("end", function () {

    const body = Buffer.concat(chunks);

    const response = JSON.parse(body.toString());

    console.log(response)

  });

});

req.end();

Et après avoir exécuté ce script, vous devriez obtenir une réponse qui ressemble à ceci :

place_results: {

    title: 'Waldo Pizza',

    data_id: '0x89c259a61c75684f:0x79d31adb123348d2',

    place_id: 'ChIJT2h1HKZZwokR0kgzEtsa03k',

    data_cid: '8778389626880739538',

    website: 'https://www.stumptowntogo.com/',

    gps_coordinates: { latitude: 38.99313451901278, longitude: -94.59368586 },

    reviews_link: 'https://serpapi.webscrapingapi.com/v1?engine=google_maps_reviews&data_id=0x89c259a61c75684f:0x79d31adb123348d2',

    place_id_search: 'https://serpapi.webscrapingapi.com/v1?engine=google_maps&type=place&device=desktop&data=!4m5!3m4!1s0x89c259a61c75684f:0x79d31adb123348d2!8m2!3d38.99313451901278!4d-94.59368586',

    thumbnail: 'https://lh5.googleusercontent.com/p/AF1QipNtnPBJ2Oi_C2YNamHTXyqU9I8mRBarCIvM5g5v=w408-h272-k-no',

    rating: 4.6,

    reviews: 2594,

    price: '$$',

    type: [ 'Pizza restaurant' ],

    service_options: { dine_in: true, curbsidepickup: true, no_contactdelivery: true },

    extensions: [

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object]

    ],

    open_state: 'Closed',

    hours: [

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object]

    ],

    contact_details: {

      address: [Object],

      action_1: [Object],

      menu: [Object],

      phone: [Object],

      plus_code: [Object]

    },

    address: '7433 Broadway St, Kansas City, MO 64114',

    images: [

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object],

      [Object], [Object]

    ],

    people_also_search_for: [ [Object], [Object], [Object] ],

    user_reviews: { summaries: [Array], most_relevant: [Array] },

    popular_times: { graph_results: [Object] }

  }

}

Et voilà. Cela signifie que vous avez réussi à extraire les résultats de recherche de lieux sur Google Maps à l'aide de notre API et que vous êtes désormais prêt à utiliser les données obtenues à des fins diverses, telles que l'analyse de données, l'analyse commerciale, l'apprentissage automatique, et bien plus encore. Pour plus d'informations et des exemples de code dans 6 autres langages de programmation afin de vous aider à démarrer, n'hésitez pas à consulter notre documentation Google Maps.

Limites des résultats de recherche de lieux sur Google Maps

Les résultats de recherche de lieux sur Google Maps, bien qu'ils constituent un outil puissant pour trouver et explorer des lieux, présentent certaines limitations dont vous devez tenir compte. Tout d'abord, la quantité de données disponibles pour chaque lieu est limitée et certaines données, telles que les photos, l'identifiant du lieu (Place ID), etc., ne sont accessibles que via l'API Google Maps et nécessitent une clé API. De plus, les données fournies dans les résultats de recherche de lieux sur Google Maps peuvent être dynamiques et évoluer au fil du temps, ce qui signifie que les données que vous récupérez peuvent ne pas être exactes ou à jour.

Conclusion

En conclusion, l'extraction des résultats de recherche de lieux sur Google Maps peut être un outil utile pour les entreprises, les chercheurs et les particuliers qui souhaitent trouver et explorer de nouveaux lieux. En suivant les étapes décrites dans cet article, vous devriez désormais disposer des connaissances et des outils nécessaires pour extraire les résultats de recherche de lieux sur Google Maps à l'aide de notre API et de Node.js.

À propos de l'auteur
Andrei Ogiolan, Développeur Full Stack @ WebScrapingAPI
Andrei OgiolanDéveloppeur Full Stack

Andrei Ogiolan est développeur Full Stack chez WebScrapingAPI ; il participe à l'ensemble du produit et contribue à la mise au point d'outils et de fonctionnalités fiables pour la plateforme.

Commencez à créer

Prêt à faire évoluer votre système de collecte de données ?

Rejoignez plus de 2 000 entreprises qui utilisent WebScrapingAPI pour extraire des données Web à l'échelle de l'entreprise, sans aucun coût d'infrastructure.