Script Python qui scrape Google Maps pour extraire des informations sur des établissements, puis visite automatiquement leurs sites web pour y collecter des adresses email.
- Python 3.8+
- Chromium (installé automatiquement via Playwright)
- Google Maps scraping : nom, adresse, site web, téléphone, note, nombre d'avis, type d'établissement, horaires, description.
- Email harvesting : pour chaque fiche, le script visite le site web et scrape les emails disponibles (page principale + page contact en fallback).
- Limite d'emails par site : configurable pour éviter de récupérer des dizaines d'adresses génériques depuis un même site.
- Gestion du consentement : acceptation automatique de la page de cookies Google.
- Délai aléatoire : pause variable entre 0.5s et 2s entre chaque site pour limiter la détection.
- Export CSV : toutes les données dans un fichier CSV, avec support de l'append.
- Mode interactif : lancement sans arguments pour une configuration guidée en terminal.
-
Cloner le dépôt :
git clone https://github.com/RDSV01/Google-Maps-Scrapper.git cd Google-Maps-Scrapper -
Installer les dépendances Python :
pip install -r requirements.txt
-
Installer Chromium pour Playwright :
playwright install chromium
python main.pyLe script pose les questions suivantes :
- Requête Google Maps (possibilité de mettre plusieurs requettes, séparées d'une virgule)
- Nombre de fiches à scraper
- Fichier de sortie
- Nombre d'emails maximum par site
- Exclure l'export des fiches sans site web ou sans email
python main.py -s "avocat paris" -t 20Scraper 20 avocats à Paris avec 1 email max par site :
python main.py -s "avocat paris" -t 20 --max-per-site 1Ajouter des résultats à un fichier existant :
python main.py -s "restaurants paris 15e" -t 50 -o paris.csv --appendScraper uniquement les données Maps sans les emails :
python main.py -s "plombiers lyon" -t 30 --no-emails- Le navigateur s'ouvre en mode visible (non headless) pour contourner les protections de Google Maps.
- Les XPaths Google Maps peuvent changer à tout moment. En cas de données manquantes, vérifier et mettre à jour les sélecteurs dans
main.py. - Ne pas lancer des volumes trop importants en peu de temps pour éviter d'être bloqué par Google.
- Chrome est détecté automatiquement s'il est installé. Sinon, le Chromium bundlé de Playwright est utilisé.
MIT