Zurück zum Blog
Anleitungen
Andrei OgiolanLast updated on Mar 31, 20266 min read

So extrahieren Sie Ergebnisse aus Google Maps über Web Scraping

So extrahieren Sie Ergebnisse aus Google Maps über Web Scraping

Einleitung

Google Maps ist einer der weltweit am häufigsten genutzten Karten- und Navigationsdienste und bietet Nutzern eine einfache Möglichkeit, Orte, Unternehmen und Sehenswürdigkeiten zu finden und zu erkunden. Eine der wichtigsten Funktionen von Google Maps ist die Möglichkeit, nach Orten zu suchen und detaillierte Informationen zu diesen anzuzeigen, wie beispielsweise deren Standort, Bewertungen, Fotos und mehr.

Das Scrapen dieser Daten aus Google Maps kann für eine Vielzahl von Zwecken nützlich sein. Beispielsweise können Unternehmen diese Daten nutzen, um die Leistung ihrer Standorte zu verfolgen und zu analysieren, Forscher können sie zur Untersuchung von Mustern im Verbraucherverhalten verwenden, und Privatpersonen können sie nutzen, um neue Orte zu finden und zu erkunden.

Der Zweck dieses Artikels ist es, eine Schritt-für-Schritt-Anleitung zu geben, wie man mit unserer API unter Verwendung von Node.js Ergebnisse aus Google Maps extrahiert. Wir behandeln alles von der Einrichtung der Entwicklungsumgebung bis zur Extraktion relevanter Daten und beschreiben mögliche Probleme. Am Ende dieses Artikels verfügen Sie über das Wissen und die Werkzeuge, die Sie benötigen, um Google Maps-Ergebnisse selbst zu extrahieren.

Warum sollten Sie einen professionellen Scraper verwenden, anstatt selbst einen zu entwickeln?

Die Verwendung eines professionellen Scrapers kann aus mehreren Gründen eine bessere Option sein als die Erstellung eines eigenen. Erstens sind professionelle Scraper darauf ausgelegt, eine Vielzahl von Scraping-Aufgaben zu bewältigen, und sind hinsichtlich Leistung, Zuverlässigkeit und Skalierbarkeit optimiert. Sie sind für die Verarbeitung großer Datenmengen ausgelegt und können mit verschiedenen Arten von Websites und Webtechnologien umgehen. Das bedeutet, dass professionelle Scraper Daten oft schneller und genauer extrahieren können als ein selbst entwickelter Scraper.

Zudem verfügen professionelle Scraper oft über integrierte Funktionen wie CAPTCHA-Lösung, IP-Rotation und Fehlerbehandlung, was den Scraping-Prozess effizienter und weniger fehleranfällig macht. Sie bieten außerdem Support und Dokumentation, was hilfreich sein kann, wenn Probleme auftreten.

Ein weiterer wichtiger Aspekt ist, dass Anbieter professioneller Scraper die Scraping-Richtlinien der von ihnen gescrapten Websites einhalten und eine rechtmäßige Nutzung der Daten gewährleisten können – ein wichtiger Punkt, den man beim Scraping von Daten im Auge behalten sollte.

Schließlich müssen Sie in unserem speziellen Fall, um Ergebnisse von Google Maps zu scrapen, einen Datenparameter wie folgt an Ihre Google-URL übergeben:

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

Der Datenparameter sieht in der Regel etwa so aus: !4m5!3m4!1s + data_id + !8m2!3 + Breitengrad + !4d + Längengrad. Ich weiß, das mag zunächst einschüchternd wirken, da Sie vielleicht keine Ahnung haben, wie Sie die data_id-Eigenschaft für einen bestimmten Ort erhalten, und Sie haben Recht, denn Google verbirgt diese Informationen, und sie sind auf der Seite nicht sichtbar, wenn Sie in Google Maps nach einem Ort suchen. Glücklicherweise übernimmt ein professioneller Scraper wie der unsere diese Aufgabe für Sie, indem er diese Daten für Sie findet. In den folgenden Abschnitten werden wir darüber sprechen, wie Sie die data_id und die Koordinaten abrufen und wie Sie den Datenparameter ganz einfach erstellen können.

Definition unseres Ziels

Was sind Google Maps-Ortsergebnisse?

Google Maps-Ortsergebnisse sind die Ergebnisse, die angezeigt werden, wenn ein Nutzer in Google Maps nach einem Ort sucht. Diese Ergebnisse können Orte wie Unternehmen, Restaurants, Hotels, Sehenswürdigkeiten und andere interessante Orte umfassen. Jedes Ortsergebnis enthält Informationen wie den Namen des Ortes, die Adresse, die Telefonnummer, die Website, Bewertungen und Fotos. Ortsergebnisse enthalten außerdem ein Google Maps Street View-Bild des Standorts sowie eine Karte, die die Lage des Ortes anzeigt. Die Ortsergebnisse können auch einen Link zur Google My Business-Seite des Ortes enthalten.

Wenn ein Nutzer auf Google Maps nach einem Ort sucht, wird ihm eine Liste mit Ortsergebnissen angezeigt, die seiner Suchanfrage entsprechen. Diese Ergebnisse werden auf der Karte und in Listenform dargestellt und können nach verschiedenen Kriterien wie Bewertung, Preis und Entfernung gefiltert werden.

Das Scraping dieser Daten kann für Unternehmen nützlich sein, die die Leistung ihrer Standorte verfolgen und analysieren möchten, für Forscher, die Muster im Verbraucherverhalten untersuchen möchten, sowie für Privatpersonen, die neue Orte finden und erkunden möchten.

Wie sieht unser Ziel aus?

Einrichtung

Bevor wir mit dem Scraping von Google Maps-Ortsergebnissen beginnen können, müssen wir sicherstellen, dass uns die erforderlichen Tools zur Verfügung stehen. Als Erstes benötigen wir Node.js, eine JavaScript-Laufzeitumgebung, die es uns ermöglicht, JavaScript serverseitig auszuführen; diese können Sie von der offiziellen Website installieren. Als Zweites benötigen Sie einen API-Schlüssel, den Sie ganz einfach erhalten, indem Sie hier ein Konto erstellen und den SERP-Dienst aktivieren.

Sobald Sie diese Dinge eingerichtet haben, müssen Sie nur noch eine JS-Datei erstellen, um ein Node.js-Skript auszuführen. Dies erreichen Sie, indem Sie den folgenden Befehl ausführen:

$ touch scraper.js

Fügen Sie nun die folgende Zeile in Ihre Datei ein:

console.log("Hello World!")

Führen Sie anschließend den folgenden Befehl aus:

$ node scraper.js

Wenn Sie nun die Meldung „Hello World!“ auf dem Terminal sehen, bedeutet dies, dass Sie Node.js erfolgreich installiert haben und bereit sind, mit dem letzten Schritt fortzufahren.

Der letzte Schritt besteht nun darin, die data_id-Informationen zu dem Ort abzurufen, der Sie interessiert. Hier kommt unsere API ins Spiel. Die Verwendung ist sehr einfach und erfordert keine Installation externer Bibliotheken.

Zunächst müssen Sie in einer JS-Datei das in Node.js integrierte Modul `https` importieren, um Anfragen an unsere API senden zu können. Dies geschieht wie folgt:

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

Zweitens müssen Sie Ihren API-Schlüssel, einen Suchbegriff und die Koordinaten des Ortes angeben, der Sie interessiert:

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"

Nun müssen Sie diese Informationen in einem Options-Objekt übergeben, damit unsere API versteht, von welchem Ort Sie Informationen abrufen möchten:

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": {}

};

Als Nächstes müssen Sie nun einen Aufruf an unsere API mit all diesen Informationen einrichten:

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();

Zum Schluss müssen Sie nur noch das von Ihnen erstellte Skript ausführen und auf die Ergebnisse warten:

​​$ node scraper.js

Daraufhin sollte die Eigenschaft „data_id“ auf dem Bildschirm angezeigt werden:

$ ​​0x87c0ef253b04093f:0xafdfd6dc1d3a2b4es

Das war’s schon. An dieser Stelle haben Sie alles, was Sie zum Erstellen des Datenparameters benötigen, und können zum nächsten Abschnitt übergehen, der den eigentlichen Zweck dieses Artikels behandelt.

Beginnen wir mit dem Scraping von Google-Ortsergebnissen

Nachdem Sie Ihre Umgebung eingerichtet haben, können Sie nun damit beginnen, Google Maps-Ortsergebnisse mit Node.js zu scrapen. Wie bereits oben erwähnt, müssen Sie nun den „data“-Parameter einrichten, um Google Maps-Ortsergebnisse zu scrapen. Da Sie nun über alles verfügen, können Sie dies wie folgt erreichen:

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

Nun müssen Sie Ihr Options-Objekt anpassen, um unserer API mitzuteilen, dass Sie nach Ortsergebnissen suchen. Mit diesem neuen Datenparameter weiß unsere API genau, über welchen Ort Sie Informationen scrapen möchten:

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": {}

};

Das resultierende Skript sollte wie folgt aussehen:

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();

Und nachdem Sie dieses Skript ausgeführt haben, sollten Sie eine Antwort erhalten, die wie folgt aussieht:

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] }

  }

}

Und das war’s schon. Das bedeutet, dass es Ihnen gelungen ist, die Google Maps-Ortsergebnisse mithilfe unserer API zu scrapen, und Sie können die gewonnenen Daten nun für viele verschiedene Zwecke nutzen, wie z. B. Datenanalyse, Geschäftsanalyse, maschinelles Lernen und vieles mehr. Weitere Informationen und Code-Beispiele in sechs weiteren Programmiersprachen für den Einstieg finden Sie in unserer Google Maps-Dokumentation.

Einschränkungen der Google Maps-Ortsergebnisse

Die Google Maps-Ortsergebnisse sind zwar ein leistungsstarkes Tool zum Finden und Erkunden von Orten, weisen jedoch einige Einschränkungen auf, die Sie beachten sollten. Erstens ist die Menge der für jeden Ort verfügbaren Daten begrenzt, und einige Daten wie Fotos, Place-IDs usw. sind nur über die Google Maps-API verfügbar und erfordern einen API-Schlüssel. Darüber hinaus können die in den Google Maps-Ortsergebnissen bereitgestellten Daten dynamisch sein und sich im Laufe der Zeit ändern, was bedeutet, dass die von Ihnen gescrapten Daten möglicherweise nicht korrekt oder aktuell sind.

Fazit

Zusammenfassend lässt sich sagen, dass das Scraping von Google Maps-Ortsergebnissen ein nützliches Werkzeug für Unternehmen, Forscher und Privatpersonen sein kann, um neue Orte zu finden und zu erkunden. Wenn Sie die in diesem Artikel beschriebenen Schritte befolgen, sollten Sie nun über das nötige Wissen und die erforderlichen Tools verfügen, um Google Maps-Ortsergebnisse mithilfe unserer API und Node.js zu scrapen.

Über den Autor
Andrei Ogiolan, Full-Stack-Entwickler @ WebScrapingAPI
Andrei OgiolanFull-Stack-Entwickler

Andrei Ogiolan ist Full-Stack-Entwickler bei WebScrapingAPI, wo er in verschiedenen Bereichen des Produkts mitwirkt und dabei hilft, zuverlässige Tools und Funktionen für die Plattform zu entwickeln.

Los geht’s

Sind Sie bereit, Ihre Datenerfassung zu erweitern?

Schließen Sie sich den über 2.000 Unternehmen an, die WebScrapingAPI nutzen, um Webdaten im Unternehmensmaßstab ohne zusätzlichen Infrastrukturaufwand zu extrahieren.