No description
- Python 100%
| .idea | ||
| .gitignore | ||
| AGENTS.md | ||
| CLAUDE.md | ||
| config.json.example | ||
| generate_regions.py | ||
| Handbuch.md | ||
| import_leads.py | ||
| Leads.py | ||
| Projekt.md | ||
| README.md | ||
| region_resolver.py | ||
| requirements.txt | ||
| search_leads.py | ||
Lead Scraper
Lead Scraper findet Betriebe in DE/AT/CH über die Google Places API, reichert Leads über die jeweilige Website bzw. Impressumsseite an und importiert gültige Kontakte nach Mautic.
Aktuelle Version: v1.2.0
Hauptfunktionen
- Generiert Regionsdateien aus offiziellen Quellen für Deutschland, Österreich und die Schweiz.
- Sucht Betriebe über Google Places API (New).
- Ruft Google Place Details ab, z. B. Website, Telefon, Adresse, Bewertung und Maps-Link.
- Schreibt Suchergebnisse in CSV.
- Prüft Webseiten direkt vom lokalen Rechner aus.
- Sucht Impressum-/Kontaktseiten und extrahiert E-Mail-Adressen.
- Überspringt Leads ohne E-Mail.
- Importiert neue Kontakte nach Mautic.
- Aktualisiert bestehende Kontakte anhand der E-Mail-Adresse.
- Erstellt Mautic-Segmente automatisch, falls sie fehlen.
- Weist Kontakte Segmenten und Tags zu.
- Nutzt Mautic-Standardfelder und wenige Google-/Scraping-Custom-Fields.
Projektdateien
generate_regions.py: lädt offizielle Gemeindelisten und erzeugtregions/**/*.json.region_resolver.py: löst Regionsargumente wieDE,BY,NW,CH:SHauf.search_leads.py: sucht Leads über Google Places und schreibt CSV.import_leads.py: validiert CSV-Leads, scannt Webseiten und importiert nach Mautic.Leads.py: zentrale CLI, die Regionsgenerierung, Suche und Import zusammenführt.config.json.example: Beispielkonfiguration ohne Secrets.regions/: generierte Regionsdateien.
Datenquellen Für Regionen
- Deutschland: Destatis Gemeindeverzeichnis.
- Österreich: Statistik Austria Gemeindeliste.
- Schweiz: BFS Amtliches Gemeindeverzeichnis.
Mautic-Import
Der Import nutzt primär Mautic-Standardfelder:
companyemailphonewebsiteaddress1citystatezipcodecountrypreferred_localetimezone
Zusätzlich werden Google-/Scraping-Daten in Custom Fields geschrieben:
google_place_idgoogle_maps_urlgoogle_ratinggoogle_reviews_countlead_sourcelead_segmentwebsite_statusimpressum_urlimport_batch
Sicherheit
config.jsonist in.gitignoreund darf nicht committed werden.- Mautic Basic Auth sollte nur über HTTPS genutzt werden.
- Für den Import empfiehlt sich ein eigener Mautic-Benutzer mit starkem Passwort.
- Google API-Keys sollten in Google Cloud eingeschränkt werden.
Typischer Ablauf
.venv/bin/python Leads.py generate-regions
.venv/bin/python Leads.py run \
--query Polsterei \
--regions BY \
--searchterm 'K*' \
--limit-cities 5 \
--limit-results-per-city 5 \
--segment Polsterei \
--output polsterei_by.csv \
--import-output polsterei_by_import_results.csv
.venv/bin/python Leads.py run \
--query Polsterei \
--regions BY \
--limit-cities 5 \
--limit-results-per-city 5 \
--segment Polsterei \
--output polsterei_by.csv \
--import-output polsterei_by_import_results.csv \
--execute \
Ausführliche Beispiele stehen in Handbuch.md.
Aktueller Stand v1.2.0
- Zentrale Bedienung über
Leads.py. - Städtefilter über
--searchtermmit Wildcards, z. B.K*,*kc,K*laut*. - Import bricht bei einzelnen fehlerhaften Kontakten nicht mehr komplett ab.
- Mautic-Feldlängen werden beim echten Import per API gelesen.
- Aktuell geprüfte Mautic-Limits:
firstname,lastname,company,position: 128 Zeichen.google_maps_url,impressum_url: 191 Zeichen.