Zurück zum Blog
Anleitungen & How-tos2026-02-13·7 Min. Lesezeit

Scraper Google Maps mit Python und Selenium: Vollständiger Leitfaden

Von Ibrahim DemolCEO IBLeadAktualisiert am 26. März 2026

Sie müssen die Kontaktdaten von 500 Restaurants, die E-Mails von lokalen Klempnern oder die Kundenbewertungen aus einer Region extrahieren? Google Maps enthält diese Daten, aber das manuelle Herunterladen dauert Stunden.

Hier kommen Python und Selenium ins Spiel. Diese beiden Tools ermöglichen die Automatisierung der Datenerfassung von Google Maps – sie erfordern jedoch Zeit, Programmierkenntnisse und stellen erhebliche technische Herausforderungen dar.

Dieser Artikel zeigt Ihnen, wie Python und Selenium für das Scraping funktionieren, die konkreten Schritte zum Starten, die Fallstricke, die es zu vermeiden gilt, und vor allem: wann ein manueller Ansatz nicht die richtige Lösung ist.


Warum Python und Selenium für Google Maps?

Google Maps ist keine einfache statische HTML-Seite. Die Ergebnisse werden dynamisch geladen: Sie geben eine Suche ein, die Einträge erscheinen schrittweise, Sie scrollen, weitere Ergebnisse werden geladen. Das ist JavaScript in Aktion.

Drei Tools können diese Daten extrahieren:

1. BeautifulSoup oder Requests Diese Python-Bibliotheken holen den Roh-HTML-Code einer Seite. Problem: Sie können kein JavaScript ausführen. Bei Google Maps erhalten Sie eine leere Seite.

2. Selenium Selenium startet einen echten Browser (Chrome, Firefox) und simuliert Klicks, Scrollen und menschliche Interaktionen. Das JavaScript wird ausgeführt. Sie können warten, bis die Ergebnisse geladen sind, und sie dann extrahieren. Es ist langsam, aber es funktioniert.

3. Puppeteer oder Playwright Ähnliche Tools wie Selenium, schneller, aber weniger dokumentiert für Anfänger.

Warum Python + Selenium wählen? - Python ist einfach zu lernen und gut dokumentiert - Selenium funktioniert mit allen Browsern - Zusammen bewältigen sie dynamische Seiten ohne API - Sie haben die volle Kontrolle über das, was Sie extrahieren

Wesentliche Einschränkung: Es ist langsam. Das Extrahieren von 1.000 Ergebnissen kann 2-3 Stunden dauern. Und Sie riskieren IP-Sperren, CAPTCHAs oder temporäre Sperren.


Technische Voraussetzungen: Was installiert werden muss

Bevor Sie eine einzige Zeile Code schreiben, installieren Sie diese Tools.

1. Python (Version 3.8 oder neuer)

Laden Sie es von python.org herunter. Während der Installation aktivieren Sie "Add Python to PATH" – das ist entscheidend, um Python über die Kommandozeile zu verwenden.

Überprüfen Sie die Installation:

python --version

Sie sollten Python 3.x.x sehen.

2. Selenium

Öffnen Sie Ihr Terminal oder die Eingabeaufforderung und geben Sie ein:

pip install selenium

Pip (Python Package Manager) lädt Selenium automatisch herunter und installiert es.

3. WebDriver für Ihren Browser

Selenium kann einen Browser nicht steuern, ohne einen Treiber (WebDriver). Die gängigste Wahl ist Chrome.

Für Chrome: - Laden Sie ChromeDriver herunter (muss mit Ihrer Chrome-Version übereinstimmen) - Entpacken Sie die Datei - Notieren Sie den vollständigen Pfad zur Datei chromedriver (z.B.: /Users/name/Downloads/chromedriver)

Einfache Alternative: Installieren Sie webdriver-manager, um die Versionen nicht manuell verwalten zu müssen:

pip install webdriver-manager

4. Zusätzliche Bibliotheken

Um die Daten zu verarbeiten und zu exportieren:

pip install pandas requests beautifulsoup4
  • Pandas: organisiert Daten in Tabellen (DataFrames)
  • Requests: führt HTTP-Anfragen durch (optional hier, aber nützlich)
  • BeautifulSoup: analysiert HTML (optional)

Überprüfen Sie, ob alles funktioniert:

python -c "import selenium; print(selenium.__version__)"

Sie sollten eine Versionsnummer sehen (z.B.: 4.15.2).


Anatomie eines Selenium-Skripts für Google Maps

Hier ist die allgemeine Struktur eines Google Maps Scraping-Skripts:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
import time
import pandas as pd

# 1. Browser starten
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

# 2. Auf Google Maps zugreifen
driver.get("https://www.google.com/maps")

# 3. Einen Suchbegriff eingeben
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "searchboxinput"))
)
search_box.send_keys("Restaurants Paris")
search_box.send_keys(Keys.ENTER)

# 4. Auf Ergebnisse warten
time.sleep(3)

# 5. Daten extrahieren
results = []
result_elements = driver.find_elements(By.CLASS_NAME, "Nv2PK")

for element in result_elements:
    try:
        name = element.find_element(By.CLASS_NAME, "NrjWb").text
        results.append({"name": name})
    except:
        pass

# 6. In CSV exportieren
df = pd.DataFrame(results)
df.to_csv("restaurants.csv", index=False)

# 7. Browser schließen
driver.quit()

Lasst uns jeden Schritt durchgehen.


Schritt 1: Browser starten

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service

service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

webdriver-manager lädt automatisch die richtige Version von ChromeDriver herunter. Sie müssen nichts manuell tun.

Alternative ohne webdriver-manager (wenn Sie ChromeDriver manuell heruntergeladen haben):

driver = webdriver.Chrome("/pfad/zum/chromedriver")

Schritt 2: Auf Google Maps zugreifen und suchen

driver.get("https://www.google.com/maps")

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Warten, bis die Suchleiste sichtbar ist
search_box = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "searchboxinput"))
)

# Suchbegriff eingeben
search_box.send_keys("Klempner Lyon")

# Enter drücken
from selenium.webdriver.common.keys import Keys
search_box.send_keys(Keys.ENTER)

# Warten, bis die Ergebnisse geladen sind
time.sleep(3)

Warum WebDriverWait? Google Maps lädt die Elemente dynamisch. Wenn Sie versuchen, die Suchleiste zu finden, bevor sie existiert, stürzt das Skript ab. WebDriverWait wartet bis zu 10 Sekunden, bis das Element erscheint.


Schritt 3: Namen und Adressen extrahieren

# Alle Ergebnisse finden (jedes Ergebnis ist ein Geschäftseintrag)
result_elements = driver.find_elements(By.CLASS_NAME, "Nv2PK")

results = []

for element in result_elements:
    try:
        # Name des Geschäfts
        name = element.find_element(By.CLASS_NAME, "NrjWb").text

        # Adresse
        address = element.find_element(By.CLASS_NAME, "Xs85Hc").text

        # Bewertung (optional)
        try:
            rating = element.find_element(By.CLASS_NAME, "MW4etd").text
        except:
            rating = "N/A"

        results.append({
            "name": name,
            "address": address,
            "rating": rating
        })
    except Exception as e:
        print(f"Fehler: {e}")
        continue

print(f"Extrahiert {len(results)} Ergebnisse")

CSS-Selektoren: By.CLASS_NAME findet Elemente nach ihrer CSS-Klasse. Die Klassennamen (Nv2PK, NrjWb) ändern sich regelmäßig bei Google. Wenn das Skript nicht funktioniert, öffnen Sie den Inspektor (F12) und finden Sie die richtigen Klassen.


Schritt 4: Paginierung verwalten

Google Maps zeigt etwa 20 Ergebnisse pro Seite an. Um mehr zu erhalten, müssen Sie nach unten scrollen.

# Den Container der Ergebnisse finden
results_container = driver.find_element(By.CLASS_NAME, "m6QErb")

# 5 Mal scrollen (jeder Scrollvorgang lädt ~20 zusätzliche Ergebnisse)
for _ in range(5):
    driver.execute_script(
        "arguments[0].scrollTop = arguments[0].scrollHeight",
        results_container
    )
    time.sleep(2)  # Warten, bis die Ergebnisse geladen sind

# ALLE Ergebnisse extrahieren (jetzt, wo Sie gescrollt haben)
all_results = driver.find_elements(By.CLASS_NAME, "Nv2PK")

Achtung: 5 Mal scrollen = ~100 Ergebnisse. 20 Mal scrollen = 400+ Ergebnisse und 2-3 Minuten. Es ist langsam.


Schritt 5: Koordinaten (Breitengrad/Längengrad) extrahieren

Google Maps speichert die GPS-Koordinaten in der URL. Sie können sie abrufen, indem Sie auf einen Eintrag klicken.

results = []

for element in result_elements:
    try:
        name = element.find_element(By.CLASS_NAME, "NrjWb").text

        # Auf das Ergebnis klicken, um den detaillierten Eintrag zu öffnen
        element.click()
        time.sleep(1)

        # Die URL abrufen (sie enthält die Koordinaten)
        current_url = driver.current_url
        # Format: https://www.google.com/maps/place/.../@48.8566,2.3522,...

        results.append({
            "name": name,
            "url": current_url
        })
    except Exception as e:
        print(f"Fehler: {e}")

Die Koordinaten befinden sich in der URL nach /@ (Breitengrad, Längengrad).


Schritt 6: Daten in CSV exportieren

import pandas as pd

# In DataFrame umwandeln
df = pd.DataFrame(results)

# In CSV exportieren
df.to_csv("resultate_google_maps.csv", index=False, encoding="utf-8")

print(f"✓ {len(results)} Ergebnisse in resultate_google_maps.csv exportiert")

Öffnen Sie die CSV-Datei in Excel oder Google Sheets.


Schritt 7: Browser schließen

driver.quit()

Schließen Sie immer den Browser, um den Speicher freizugeben.


Vollständiges Skript: Konkretes Beispiel

Hier ist ein funktionierendes Skript, um Restaurants aus einer Stadt zu extrahieren:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service
import time
import pandas as pd

# Browser starten
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)

try:
    # Auf Google Maps zugreifen
driver.get("https://www.google.com/maps")

    # Nach Restaurants suchen
    search_box = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "searchboxinput"))
    )
    search_box.send_keys("Restaurants Marseille")
    search_box.send_keys(Keys.ENTER)

    time.sleep(3)

    # Scrollen, um mehr Ergebnisse zu laden
    results_container = driver.find_element(By.CLASS_NAME, "m6QErb")
    for _ in range(3):
        driver.execute_script(
            "arguments[0].scrollTop = arguments[0].scrollHeight",
            results_container
        )
        time.sleep(2)

    # Daten extrahieren
    results = []
    result_elements = driver.find_elements(By.CLASS_NAME, "Nv2PK")

    for element in result_elements[:50]:  # Auf 50 begrenzen, um zu testen
        try:
            name = element.find_element(By.CLASS_NAME, "NrjWb").text
            address = element.find_element(By.CLASS_NAME, "Xs85Hc").text

            results.append({
                "name": name,
                "address": address
            })
        except:
            pass

    # Exportieren
df = pd.DataFrame(results)
df.to_csv("restaurants_marseille.csv", index=False, encoding="utf-8")

    print(f"✓ {len(results)} Restaurants extrahiert")

finally:
    driver.quit()

Führen Sie es aus:

python scraper.py

Ein Chrome-Browser öffnet sich, führt die Suche durch und exportiert die Ergebnisse.


Die echten Herausforderungen des Scrapings von Google Maps

Das Skript funktioniert auf Ihrem Computer. Aber im großen Maßstab stoßen Sie auf Probleme.

1. IP-Sperre

Nach 50-100 Anfragen von derselben IP sperrt Google Sie vorübergehend. Sie sehen ein CAPTCHA oder eine Fehlermeldung.

Lösungen: - Fügen Sie zufällige Verzögerungen zwischen den Anfragen hinzu (time.sleep(random.randint(2, 5))) - Verwenden Sie Proxys oder ein VPN - Verteilen Sie die Anfragen über mehrere Tage

2. CAPTCHA

Google kann ein CAPTCHA anzeigen, um zu überprüfen, ob Sie ein Mensch sind. Selenium kann es nicht automatisch lösen (ohne kostenpflichtige externe Tools).

Lösungen: - Akzeptieren Sie, dass einige Anfragen fehlschlagen - Verwenden Sie CAPTCHA-Lösungsdienste (teuer und langsam) - Scraping in Maßen durchführen

3. CSS-Selektoren, die sich ändern

Google ändert regelmäßig seine CSS-Klassen. Nv2PK von heute kann morgen Abc123 werden. Ihr Skript bricht.

Lösungen: - Verwenden Sie stabilere XPath-Selektoren (komplexer) - Überprüfen und aktualisieren Sie das Skript jeden Monat - Überwachen Sie Fehler

4. Leistung

Das Extrahieren von 1.000 Ergebnissen dauert 50+ Minuten. Das Extrahieren von 10.000 dauert 8+ Stunden. Es ist sehr langsam im Vergleich zu automatisierten Tools.

5. Unvollständige Daten

Sie erhalten die Namen und Adressen. Aber die E-Mails, Telefonnummern, Bewertungen, verwendeten Technologien? Sie müssen auf jeden Eintrag klicken, warten, bis er geladen ist, und dann extrahieren. Das ist noch langsamer.

6. Rechtliche Konformität

Die Google Maps ToS verbieten automatisiertes Scraping. Sie riskieren keine rechtlichen Schritte, aber Ihr Konto könnte gesperrt werden oder Ihre IP dauerhaft blockiert werden.


Wann Python + Selenium NICHT die richtige Lösung ist

Selenium ist leistungsstark, aber es ist nicht das ideale Tool für:

Regelmäßige Extraktion von > 500 Ergebnissen Zu langsam, zu viele Risiken einer Sperre.

Haben von E-Mails, Telefonen, Bewertungen, Technologien Selenium kann das tun, aber Sie müssten auf jeden Eintrag klicken. 1.000 Einträge = 2-3 Tage Scraping.

Monatlich aktualisierte Daten Sie müssen das Skript jeden Monat neu starten. Risiko einer Sperre bei jedem Durchlauf.

Bedarf an angereicherten Daten Die Rohdaten von Google Maps fehlen geschäftliche Informationen.

Keine Programmierkenntnisse Python + Selenium erfordern Debugging, Wartung, Updates.


IBLead: die codefreie Alternative

Wenn Sie schnell Daten von Google Maps extrahieren müssen, ohne zu scrapen, gibt es einen anderen Ansatz: die Verwendung einer vorindexierten Datenbank.

IBLead ist eine Datenbank mit über 5 Millionen Google Maps-Unternehmen (Frankreich, Belgien, Schweiz, Kanada, USA und 10+ andere Länder). Die Daten werden monatlich aktualisiert – kein Scraping erforderlich.

Sie suchen nach Stadt, Region, Kategorie und exportieren dann in CSV mit: - Namen, Adressen, Telefonnummern - E-Mails (angereichert von der Website) - Google-Bewertungen (voller Text, Bewertungen, Daten, Autoren) – exklusiv - Erfasste Technologien (WordPress, Shopify, HubSpot usw.) – exklusiv - Soziale Medien, Öffnungszeiten, GPS-Koordinaten

Vergleich: Python + Selenium vs. IBLead

Bereit loszulegen?

Zugriff auf jedes Google Maps Unternehmen, angereichert mit E-Mails und rechtlichen Daten.

IBLead kostenlos testen