Skip to content

bright-data-de/Google-Maps-Scraper

Repository files navigation

Google Maps Scraper

Inhaltsverzeichnis

Kostenloser Google Maps Scraper

Verwenden Sie diesen kostenlosen Scraper, um Unternehmensbewertungen aus Google Maps zu extrahieren. Sie können in nur wenigen Schritten Details zu Rezensenten, Bewertungen, Bewertungstext, Fotos und mehr abrufen.

Setup und Installation

Bevor Sie loslegen, stellen Sie sicher, dass Sie diese Voraussetzungen installiert haben:

  • Python 3.9+
  • Playwright (für Browser-Automatisierung)

Folgen Sie diesen Schritten, um alles einzurichten:

  1. Klonen Sie das Repository auf Ihren lokalen Rechner

  2. Navigieren Sie in das Verzeichnis free-scraper

  3. Installieren Sie die erforderlichen Abhängigkeiten:

    pip install playwright
    playwright install

So verwenden Sie den Scraper

Gehen wir Schritt für Schritt durch, wie Sie den Scraper verwenden:

  1. Öffnen Sie main.py und fügen Sie Ihre Ziel-Google-Maps-URLs hinzu:

    urls = [
            "https://www.google.com/maps/place/Joe's+Pizza+Broadway/@40.7546835,-73.989604,17z/data=!3m1!5s0x89c259ab3e91ed73:0x4074c4cfa25e210b!4m8!3m7!1s0x89c259ab3c1ef289:0x3b67a41175949f55!8m2!3d40.7546795!4d-73.9870291!9m1!1b1!16s%2Fg%2F11bw4ws2mt?entry=ttu",
            "https://www.google.com/maps/place/Googleplex/@37.4220583,-122.0878991,17z/data=!4m8!3m7!1s0x808fba02425dad8f:0x6c296c66619367e0!8m2!3d37.4220541!4d-122.0853242!9m1!1b1!16zL20vMDNiYnkx?hl=en&entry=ttu",
            # Add as many URLs as you need
        ]
  2. Führen Sie das Skript aus mit:

    python main.py

Ausgabe

Der Scraper speichert die Ergebnisse in free_scraper_output.json und enthält:

{
    "reviewer_name": "Jacqueline",
    "reviewer_link": "https://www.google.com/maps/contrib/108281841745817069467/reviews?hl=en-GB",
    "reviewer_image": "https://lh3.googleusercontent.com/a-/ALV-UjUzl62rTNZOxsKGxvlnjM3leUg7DZostYzDJvG_8DUSNEtC7p-X=w36-h36-p-rp-mo-ba4-br100",
    "rating": 5,
    "date": "a week ago",
    "text": "Went for lunch on a Tuesday at around 12:45pm. As usual, there was a line, but it moved really quickly and I was able to get my pizza 10 minutes later. Don't let the line deter you from trying Joe's! The pizza is great as always and the staff are nice. Never disappointed. I tried the caprese pizza and it was great!\n\nThere are a lot of people inside and outside so it can get hectic, but turnover for seats is quite quick and I got a seat on the bench outside almost right away.",
    "photos": [
        "https://lh5.googleusercontent.com/p/AF1QipMChGwUdQgWF9NAqdvss36KeuBZw_DAiuZy5yJj=w300-h225-p-k-no",
        "https://lh5.googleusercontent.com/p/AF1QipNvachPq2HyJU0_3hs0DsRDRChaHZrQDDKOc3hz=w300-h225-p-k-no"
    ],
    "likes_count": "1"
}

Jeder Bewertungseintrag enthält:

  • Rezensenten-Details: Name, Profil-Link und Avatarbild
  • Bewertungsinhalt: Sternebewertung, Veröffentlichungsdatum und vollständiger Bewertungstext
  • Medien: URLs aller angehängten Fotos
  • Engagement: Anzahl der Likes, die die Bewertung erhalten hat

Häufige Scraping-Herausforderungen

Das Scraping von Daten aus Google Maps kann ziemlich herausfordernd sein. Hier sind einige häufige Probleme, denen Sie begegnen können:

  1. Dynamisches Laden von Inhalten: Google Maps verwendet einen Mechanismus zum dynamischen Laden, bei dem Bewertungen über XHR/API-Anfragen abgerufen werden, während der Nutzer scrollt. Ohne angemessene Behandlung dieser dynamischen Anfragen und ohne darauf zu warten, dass Inhalte geladen werden, erfassen Scraper möglicherweise nur unvollständige Daten.
  2. Änderungen der DOM-Struktur: Google aktualisiert häufig die DOM-Struktur, Klassennamen und Datenattribute. Dies erfordert eine regelmäßige Wartung der Scraping-Logik, um sich an strukturelle Änderungen anzupassen.
  3. Ratenbegrenzung und Erkennung: Scraping von Google Maps kann Anti-Bot-Abwehrmaßnahmen auslösen, was zu Ratenbegrenzung oder IP-Sperren führen kann.

Lösung: Bright Data Google Maps Scraper API

Wenn Sie eine zuverlässige, groß angelegte Datenextraktion benötigen, verwenden Sie die Bright Data Google Maps Scraper API. Darum funktioniert sie besser:

  • Es ist kein Proxy-Management erforderlich
  • Scraping von jedem Standort weltweit
  • Zugriff auf 72M+ echte IPs in 195 Ländern
  • Mehrere Optionen für die Datenbereitstellung (S3, Cloud Storage usw.)
  • DSGVO- und CCPA-konform
  • 24/7 technischer Support

Außerdem erhalten Sie 20 kostenlose API-Aufrufe, um es zu testen.

Google Maps Scraper API verwenden

Sie können detaillierte Google-Maps-Bewertungen sammeln, indem Sie einfach eine URL bereitstellen.

bright-data-web-scraper-api-google-maps-reviews

Eine detaillierte Anleitung zum Einrichten der Google Maps Scraper API finden Sie in unserem Step-by-Step Setup Guide.

Wichtige Eingabeparameter:

Parameter Typ Beschreibung Erforderlich
url string Google Maps business URL Ja
days_limit number Anzahl der Tage, aus denen Bewertungen abgerufen werden Nein

Beispiel-Ausgabedaten:

{
    "url": "https://www.google.com/maps/place/Apple+Apple+Park+Visitor+Center/@37.3327772,-122.0079593,17z/data=!4m18!1m9!3m8!1s0x808fb5c5d7e7a3d1:0x1741de234d732f80!2sApple+Apple+Park+Visitor+Center!8m2!3d37.332773!4d-122.0053844!9m1!1b1!16s%2Fg%2F11rjtz4vtg!3m7!1s0x808fb5c5d7e7a3d1:0x1741de234d732f80!8m2!3d37.332773!4d-122.0053844!9m1!1b1!16s%2Fg%2F11rjtz4vtg?entry=ttu",
    "place_id": "ChIJ0aPn18W1j4ARgC9zTSPeQRc",
    "place_name": "Apple Apple Park Visitor Center",
    "country": "US",
    "address": "10600 N Tantau Ave, Cupertino, CA 95014",
    "review_id": "ChdDSUhNMG9nS0VJQ0FnSUMzcDdqMHJRRRAB",
    "reviewer_name": "Krzysztof Wojtczak",
    "reviews_by_reviewer": 32,
    "photos_by_reviewer": "12",
    "reviewer_url": "https://www.google.com/maps/contrib/110797405132582450368/reviews?hl=en",
    "local_guide": true,
    "review_rating": 5,
    "review": "Fajnie można spędzić czas, czilując na tarasie z kawką 🤙",
    "review_date": "2024-11-09T22:18:01.713Z",
    "number_of_likes": 0,
    "response_of_owner": null,
    "response_date": null,
    "photos": [
      "https://lh5.googleusercontent.com/p/AF1QipOtSDFfVpLL5GopXJzoFbTapha0G91nmEx5aSus",
      "https://lh5.googleusercontent.com/p/AF1QipPcr5_TU6MWhAu1_K54DbxywZ4O88Q_qT7NSnhv",
      "https://lh5.googleusercontent.com/p/AF1QipNLM5jHD0iDozGHsax9ydGAWUI_pn_fujQ3Q4Wr",
      "https://lh5.googleusercontent.com/p/AF1QipPcKPwXyHDawuClpTpfV3zE7vMFO0UabmdjX9IG"
    ],
    "timestamp": "2024-11-10T07:37:58.326Z",
    "input": {
      "url": "https://www.google.com/maps/place/Apple+Apple+Park+Visitor+Center/@37.3327772,-122.0079593,17z/data=!4m18!1m9!3m8!1s0x808fb5c5d7e7a3d1:0x1741de234d732f80!2sApple+Apple+Park+Visitor+Center!8m2!3d37.332773!4d-122.0053844!9m1!1b1!16s%2Fg%2F11rjtz4vtg!3m7!1s0x808fb5c5d7e7a3d1:0x1741de234d732f80!8m2!3d37.332773!4d-122.0053844!9m1!1b1!16s%2Fg%2F11rjtz4vtg?entry=ttu",
      "days_limit": 30
    }
  }

Sie können die vollständige Ausgabe anzeigen, indem Sie diese Beispiel-JSON-Datei herunterladen.

Codebeispiel:

Hier ist ein Python-Skript, um Google-Maps-Bewertungen zu sammeln und die Ergebnisse in einer JSON-Datei zu speichern:

import requests
import json
import time


class BrightData:
    def __init__(self, api_token):
        self.api_token = api_token
        self.headers = {
            "Authorization": f"Bearer {api_token}",
            "Content-Type": "application/json",
        }

    def collect_reviews(self, urls_data):
        """
        Collect Google Maps reviews using BrightData API
        """
        # 1. Trigger data collection
        print("Starting data collection...")
        trigger_response = self._trigger_collection(urls_data)
        snapshot_id = trigger_response.get("snapshot_id")
        print(f"Snapshot ID: {snapshot_id}")

        # 2. Wait for data to be ready
        print("Waiting for data...")
        while True:
            status = self._check_status(snapshot_id)
            print(f"Status: {status}")

            if status == "ready":
                # Check if data is actually available
                data = self._get_data(snapshot_id)
                if data and len(data) > 0:
                    break
            time.sleep(10)  # Wait 10 seconds before next check

        # 3. Get and save the data
        print("Saving data...")
        filename = f"api_scraper_output.json"
        with open(filename, "w", encoding="utf-8") as f:
            json.dump(data, f, indent=2, ensure_ascii=False)
        print(f"✓ Data saved to {filename}")
        print(f"✓ Collected {len(data)} reviews")
        return data

    def _trigger_collection(self, urls_data):
        """Trigger data collection"""
        response = requests.post(
            "https://api.brightdata.com/datasets/v3/trigger",
            headers=self.headers,
            params={"dataset_id": "gd_luzfs1dn2oa0teb81",
                    "include_errors": "true"},
            json=urls_data,
        )
        return response.json()

    def _check_status(self, snapshot_id):
        """Check collection status"""
        response = requests.get(
            f"https://api.brightdata.com/datasets/v3/progress/{snapshot_id}",
            headers=self.headers,
        )
        return response.json().get("status")

    def _get_data(self, snapshot_id):
        """Get collected data"""
        response = requests.get(
            f"https://api.brightdata.com/datasets/v3/snapshot/{snapshot_id}",
            headers=self.headers,
            params={"format": "json"},
        )
        return response.json()


if __name__ == "__main__":
    # Initialize with your API token
    brightdata = BrightData("<YOUR_API_TOKEN>")

    # Define URLs to collect reviews from
    urls_to_collect = [
        {
            "url": "https://www.google.com/maps/place/Apple+Apple+Park+Visitor+Center/@37.3327772,-122.0079593,17z/data=!4m18!1m9!3m8!1s0x808fb5c5d7e7a3d1:0x1741de234d732f80!2sApple+Apple+Park+Visitor+Center!8m2!3d37.332773!4d-122.0053844!9m1!1b1!16s%2Fg%2F11rjtz4vtg!3m7!1s0x808fb5c5d7e7a3d1:0x1741de234d732f80!8m2!3d37.332773!4d-122.0053844!9m1!1b1!16s%2Fg%2F11rjtz4vtg?entry=ttu",
            "days_limit": 30,
        },
        {
            "url": "https://www.google.com/maps/place/Joe's+Pizza+Broadway/@40.7546835,-73.989604,17z/data=!3m1!5s0x89c259ab3e91ed73:0x4074c4cfa25e210b!4m8!3m7!1s0x89c259ab3c1ef289:0x3b67a41175949f55!8m2!3d40.7546795!4d-73.9870291!9m1!1b1!16s%2Fg%2F11bw4ws2mt?entry=ttu",
            "days_limit": 25,
        },
    ]

    # Collect reviews
    reviews = brightdata.collect_reviews(urls_to_collect)

So funktioniert der Code:

  1. API-Token erforderlich: Zuerst benötigen Sie ein API-Token. Falls Sie noch keines haben, folgen Sie unserer Google Maps Scraper API setup guide.
  2. Datenerfassung starten: Übergeben Sie Ihr API-Token an den Code, und er startet die Datenerfassung mit Ihren angegebenen Parametern. Dies gibt eine snapshot_id zurück, die Sie verwenden, um Ihre Anfrage zu verfolgen.
  3. Auf Ergebnisse warten: Die Datenerfassung dauert einige Minuten. Während dieser Zeit prüft unser Code fortlaufend den Status der snapshot_id:
    • Status "running" = Daten werden noch gesammelt
    • Status "ready" = Datenerfassung ist abgeschlossen und in Ihrer JSON-Datei gespeichert
  4. Zusätzliche Parameter: Sie können Ihre Datenerfassung anpassen, indem Sie der Funktion _trigger_collection weitere Parameter hinzufügen. Sehen Sie sich den nächsten Abschnitt an, um zu erfahren, welche Parameter verfügbar sind, und um mehr über verschiedene Methoden der Datenbereitstellung zu lernen.

Datenerfassung mit API-Parametern anpassen

Verwenden Sie die folgenden API-Parameter, um Ihre Datenerfassung anzupassen:

Parameter Typ Beschreibung Beispiel
limit integer Begrenzen Sie die Anzahl der zurückgegebenen Ergebnisse für jede Eingabe. limit=10
include_errors boolean Fügen Sie zur Fehleranalyse einen Fehlerbericht in der Ausgabe hinzu. include_errors=true
notify url URL, an die eine Benachrichtigung gesendet wird, sobald die Erfassung abgeschlossen ist. notify=https://notify-me.com/
format enum Format für die Datenbereitstellung. Unterstützte Formate: JSON, NDJSON, JSONL, CSV. format=json

💡Zusätzliche Bereitstellungsmethoden: Sie können wählen, die Daten per webhook oder über die API bereitzustellen.

About

Extrahieren Sie Google Maps-Daten, einschließlich Rezensionen, Bewertungen, Fotos und mehr, mit der führenden Google Maps Scraper API. Starten Sie noch heute Ihre kostenlose Testversion!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages