Wissen Sie immer, was Ihre Wettbewerber gerade verlangen? Für die meisten Unternehmen ist die Antwort: nein. Preisanpassungen bei Amazon, Zalando oder dem direkten Konkurrenten passieren täglich — oft mehrmals. Wer seine Preise manuell kontrolliert, liegt zwangsläufig hinterher.
Die Lösung: ein Python-Scraper der Preise automatisch überwacht, Veränderungen erkennt und Sie per E-Mail oder Telegram benachrichtigt. Was früher ein teures Tool-Abo erforderte, lässt sich heute mit ca. 50 Zeilen Python realisieren. Dieser Guide zeigt Ihnen, wie.
Was ist Web Scraping und ist es legal?
Web Scraping bezeichnet das automatisierte Auslesen von Webseiten. Ein Python-Skript ruft eine URL auf, analysiert den HTML-Quellcode und extrahiert die gewünschten Daten — in unserem Fall Preise, Produktnamen oder Verfügbarkeit.
Zur Legalität: Das Auslesen öffentlich zugänglicher Preisdaten für den eigenen Gebrauch ist in Deutschland grundsätzlich erlaubt, solange Sie die robots.txt der Webseite respektieren, keine Serverüberlastung verursachen und keine Login-Schranken umgehen. Kommerzielle Weiterverkauf der Daten oder massives Crawling ohne Erlaubnis sind hingegen rechtlich problematisch. Im Zweifel: immer erst die Nutzungsbedingungen lesen.
Die richtige Python-Bibliothek wählen
Für Preisüberwachung mit Python gibt es drei bewährte Ansätze:
- requests + BeautifulSoup: Ideal für statische Seiten. Einfach, schnell, ressourcenschonend. Funktioniert hervorragend für viele Shop-Seiten.
- Playwright / Selenium: Notwendig wenn die Preise per JavaScript nachgeladen werden (z.B. bei dynamischen Shops). Simuliert einen echten Browser, ist aber deutlich langsamer.
- Scrapy: Das Vollpaket für professionelles Crawling großer Webseiten. Für einfache Preisüberwachung meist überdimensioniert.
Für den Einstieg empfehle ich requests + BeautifulSoup. Installation mit einem Befehl:
pip install requests beautifulsoup4 lxml
Schritt-für-Schritt: Ihren ersten Python Scraper bauen
Schritt 1: Den Preis auf der Zielseite identifizieren
Öffnen Sie die Produktseite in Ihrem Browser und drücken Sie F12 (Entwicklertools). Rechtsklick auf den Preis → „Element untersuchen". Sie sehen das HTML-Element mit einem CSS-Selektor oder einer Klasse wie class="price-box" oder einer ID wie id="product-price". Notieren Sie sich diesen Selektor — das ist Ihr Angriffspunkt.
Schritt 2: Den Preis auslesen
import requests
from bs4 import BeautifulSoup
def get_price(url, css_selector):
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/120.0 Safari/537.36"
}
response = requests.get(url, headers=headers, timeout=10)
soup = BeautifulSoup(response.text, "lxml")
price_element = soup.select_one(css_selector)
if price_element:
price_text = price_element.get_text(strip=True)
return price_text
return None
# Beispiel: Amazon-Produkt (CSS-Selektor anpassen)
url = "https://www.beispielshop.de/produkt-xyz"
preis = get_price(url, ".price")
print(f"Aktueller Preis: {preis}")
Schritt 3: Preise in einer CSV speichern
Einmalig Daten abrufen reicht nicht — Sie brauchen einen historischen Verlauf. Speichern Sie jeden Abruf mit Zeitstempel:
import csv
import os
from datetime import datetime
def save_price(product_name, price, filename="preise.csv"):
file_exists = os.path.isfile(filename)
with open(filename, "a", newline="", encoding="utf-8") as f:
writer = csv.writer(f)
if not file_exists:
writer.writerow(["Datum", "Produkt", "Preis"])
writer.writerow([datetime.now().isoformat(), product_name, price])
Schritt 4: Preisänderungen erkennen und benachrichtigen
Der entscheidende Teil: das Skript vergleicht den aktuellen Preis mit dem zuletzt gespeicherten Wert und schickt eine E-Mail wenn sich etwas ändert:
import smtplib
from email.mime.text import MIMEText
def send_alert(product, old_price, new_price, recipient_email):
msg = MIMEText(
f"Preisänderung erkannt!\n\n"
f"Produkt: {product}\n"
f"Alter Preis: {old_price}\n"
f"Neuer Preis: {new_price}\n"
)
msg["Subject"] = f"⚠️ Preisänderung: {product}"
msg["From"] = "alerts@ihredomain.de"
msg["To"] = recipient_email
with smtplib.SMTP_SSL("smtp.ihredomain.de", 465) as smtp:
smtp.login("alerts@ihredomain.de", "IHR_PASSWORT")
smtp.send_message(msg)
Schritt 5: Automatisch alle 6 Stunden ausführen
Auf einem Linux-Server (oder Raspberry Pi) richten Sie einen Cronjob ein:
# Crontab öffnen:
crontab -e
# Alle 6 Stunden ausführen:
0 */6 * * * /usr/bin/python3 /home/user/preisscraper.py
Auf Windows erledigt der Aufgabenplaner dasselbe. Alternativ eignet sich ein kostenloser Cloud-Dienst wie PythonAnywhere oder ein einfacher Hetzner-VPS für unter €5/Monat.
Mehrere Produkte gleichzeitig überwachen
Ein produktionsreifer Preismonitor überwacht nicht nur ein, sondern dutzende oder hunderte Produkte gleichzeitig. Dafür strukturieren Sie Ihre Produkte in einer JSON-Datei:
# produkte.json
[
{
"name": "Konkurrenz-Produkt A",
"url": "https://shop-x.de/produkt-a",
"selector": ".product-price",
"letzter_preis": null
},
{
"name": "Eigenes Produkt bei Amazon",
"url": "https://amazon.de/dp/ASIN123",
"selector": ".a-price-whole",
"letzter_preis": null
}
]
Das Hauptskript iteriert dann über alle Einträge, vergleicht Preise und sendet bei Änderungen sofort eine Benachrichtigung. Mit time.sleep(2) zwischen den Anfragen respektieren Sie die Server der Zielsites und vermeiden Blocks.
Häufige Probleme und Lösungen
„403 Forbidden" oder leerer Response
Viele Websites blocken Anfragen ohne Browser-Header. Lösung: Realistischen User-Agent setzen (wie im Code oben) und ggf. Referer-Header ergänzen. Für hartnäckige Fälle hilft playwright mit echtem Browser-Rendering.
Preis wird per JavaScript geladen
Wenn BeautifulSoup keinen Preis findet obwohl er auf der Seite sichtbar ist, wird er wahrscheinlich dynamisch per JavaScript eingefügt. Wechseln Sie in diesem Fall auf playwright:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch()
page = browser.new_page()
page.goto("https://shop.beispiel.de/produkt")
price = page.locator(".price").text_content()
browser.close()
Preisformat variiert (€12,99 vs. 12.99 EUR)
Normalisieren Sie Preise immer zu einem einheitlichen Float-Wert bevor Sie vergleichen. Ein simples re.sub(r'[^\d,.]', '', price_text) entfernt Währungssymbole und Leerzeichen.
Preisüberwachung als Wettbewerbsvorteil
Systematische Preisüberwachung ermöglicht datengestützte Preisentscheidungen statt Bauchgefühl:
- Reaktive Preisanpassung: Senkt ein Konkurrent seinen Preis, reagieren Sie innerhalb von Stunden statt Tagen.
- Historische Trendanalyse: Wann sind Preise bei bestimmten Produkten typischerweise niedrig? (z.B. Black Friday, Saison-Ende)
- Eigene Positionierung prüfen: Sind Sie im Marktvergleich immer noch wettbewerbsfähig?
- Lieferanten-Monitoring: Überwachen Sie nicht nur Konkurrenz-Endpreise, sondern auch Großhandelspreise für Ihren Einkauf.
💡 Unser Portfolio-Projekt PriceWatch zeigt, wie ein vollständiges Preisüberwachungs-System für einen deutschen Online-Händler aussieht — mit Dashboard, Alarm-System und historischen Verlaufsgraphen.
Skalierung: Von der Idee zum professionellen System
Ein einfaches Python-Skript reicht für 10–50 Produkte problemlos. Wollen Sie hunderte oder tausende Produkte überwachen, brauchen Sie eine robustere Architektur:
- Datenbank statt CSV:
SQLitefür kleine Setups,PostgreSQLwenn es größer wird - Parallele Anfragen: Mit
asyncio+aiohttplassen sich dutzende Seiten gleichzeitig abrufen - Proxy-Rotation: Bei aggressivem Crawling vermeiden Proxy-Services (z.B. Bright Data, Oxylabs) IP-Blocks
- Dashboard:
Grafanaoder ein einfaches Flask-Frontend visualisiert Preisverläufe übersichtlich
Den Aufbau eines solchen Systems — von der ersten Python-Zeile bis zum laufenden Dashboard — haben wir in unserem Projekt PriceWatch für einen Kunden umgesetzt. Das Ergebnis: vollautomatische Preisüberwachung von über 300 Konkurrenz-Produkten, tägliche Reports und sofortige Alarm-E-Mails bei Preisänderungen größer als 5%.
Mehr zu automatisierten Workflows lesen Sie in unserem Guide Geschäftsprozesse automatisieren: Der komplette Guide für KMU. Wer seinen E-Commerce-Betrieb weiter automatisieren möchte, findet weitere Ideen in unserem Artikel über E-Commerce Automatisierung.
Preisüberwachung für Ihr Unternehmen?
Wir bauen Ihnen ein maßgeschneidertes Preismonitoring-System — von der Datenerfassung bis zum fertigen Dashboard. Starten Sie mit einer kostenlosen Beratung.
Kostenlose Beratung anfragen →