Yandex.Eda, Delivery Club, SberMarket und Dutzende regionaler Lieferaggregatoren sind ein wahres Datenparadies für Marketer, Analysten und Restaurantbesitzer. Doch sobald man beginnt, systematisch Preise und Menüpositionen zu sammeln, beginnen die Dienste, Anfragen zu blockieren. In diesem Artikel werden wir besprechen, wie man das Parsing von Menüs und Lieferpreisen richtig organisiert, welche Werkzeuge man verwenden sollte und wie Proxys helfen, Blockierungen zu vermeiden.
Warum man Menüs von Restaurants und Lieferpreise parsen sollte
Der Markt für Essenslieferungen in Russland ist eines der dynamischsten Segmente im E-Commerce. Die Preise für Gerichte, die Zusammensetzungen der Menüs und die Lieferbedingungen ändern sich buchstäblich jeden Tag. Manuell diese Änderungen zu verfolgen ist unmöglich, wenn es um Dutzende von Wettbewerbern oder Hunderte von Positionen geht. Hier kommt die automatische Datensammlung ins Spiel.
Hier sind einige, die das Parsing von Menüs und Preisen in der Praxis nutzen:
- Restaurant- und Cafébesitzer – verfolgen die Preise der Wettbewerber in ihrer Gegend, um ihre eigene Preisgestaltung schnell anzupassen.
- Marketer von Restaurantketten – analysieren, welche Menüpositionen die Wettbewerber durch Aktionen und Sonderangebote bewerben.
- Analysten im HoReCa-Markt – erstellen Berichte über die Durchschnittspreise für Kategorien von Gerichten in verschiedenen Städten und Regionen.
- Startup-Aggregatoren – sammeln eine Datenbank von Restaurants mit Menüs und Preisen für ihren eigenen Katalog.
- Investoren und Berater – bewerten das Wettbewerbsumfeld vor der Eröffnung eines neuen Lokals oder einer Franchise.
- App-Entwickler – erstellen Datenbanken von Gerichten für Apps zur Kalorienzählung oder Essensplanung.
Wenn Sie im Restaurantgeschäft tätig sind oder dessen Analyse betreiben, ist die regelmäßige Überwachung der Preise der Wettbewerber keine Luxus, sondern eine Notwendigkeit. Ein Unterschied von 30–50 Rubel bei einem beliebten Gericht kann sich direkt auf die Konversionsrate in Bestellungen auswirken. Und ohne Automatisierung werden Sie immer einen Schritt hinter denen sein, die bereits die Datensammlung eingerichtet haben.
Welche Daten von Lieferaggregatoren gesammelt werden
Bevor Sie einen Parser einrichten, ist es wichtig zu verstehen, welche Daten Sie benötigen. Lieferaggregatoren enthalten mehrere Informationsschichten, und jede von ihnen ist für verschiedene Aufgaben nützlich.
| Datentyp | Was es beinhaltet | Für wen nützlich |
|---|---|---|
| Menü und Positionen | Namen der Gerichte, Beschreibungen, Zusammensetzung, Gewicht, Nährwerte | App-Entwickler, Ernährungsberater |
| Preise der Gerichte | Aktueller Preis, Preis mit Rabatt, Preisänderungshistorie | Restaurantbesitzer, Marketer |
| Lieferbedingungen | Lieferkosten, Mindestbestellwert, Lieferzeit | Analysten, Startups |
| Aktionen und Sonderangebote | Rabatte, Kombis, Aktionsgerichte, saisonale Angebote | Marketer, Wettbewerbsanalyse |
| Bewertungen und Rezensionen | Bewertungen der Lokale, Anzahl der Rezensionen, Qualitätsmerkmale | Investoren, Berater |
| Geodaten | Adressen, Liefergebiete, Präsenzgebiete | Marktanalyse, Franchises |
Besonders wertvoll ist die Überwachung der Preise über die Zeit: Wenn man die Daten einmal täglich über mehrere Monate hinweg sammelt, kann man Muster in der Preisgestaltung der Wettbewerber erkennen – wann sie die Preise erhöhen, wann sie Aktionen starten und wie sie auf äußere Ereignisse reagieren (Feiertage, Sportereignisse, schlechtes Wetter).
Besonderheiten des Schutzes von Yandex.Eda, Delivery Club und anderen Aggregatoren
Große Lieferaggregatoren schützen aktiv ihre Daten vor automatisierter Sammlung. Und das ist verständlich: Ihre Datenbank von Restaurants und aktuellen Preisen ist ihr Wettbewerbsvorteil. Bevor Sie einen Parser einrichten, müssen Sie verstehen, mit welchen Schutzmaßnahmen Sie konfrontiert werden.
Yandex.Eda
Verwendet mehrere Schutzebenen gleichzeitig. Erstens wird aktiv Geotargeting eingesetzt: Der Inhalt des Menüs und die Preise werden abhängig von Ihrer IP-Adresse angezeigt – wenn die IP aus Moskau stammt, sehen Sie die Moskauer Restaurants. Zweitens funktioniert die Seite als SPA (Single Page Application) auf React, das heißt, die Daten werden über API-Anfragen geladen und sind nicht im HTML eingebettet. Drittens wird bei verdächtiger Aktivität Yandex SmartCaptcha aktiviert. Bei häufigen Anfragen von einer IP-Adresse wird Ihnen der Zugang zur Seite einfach verweigert.
Delivery Club (SberMarket)
Ähnliche Architektur: Daten werden über eine interne API bereitgestellt, nicht über statisches HTML. Der Dienst analysiert Verhaltensmuster: Wenn die Anfragen zu schnell oder ohne Pausen kommen – Blockierung. Auch die Analyse des User-Agent und der Anfrage-Header wird verwendet. Ungewöhnliche Header wecken sofort Verdacht.
Regionale Aggregatoren
Dienste wie Chibbis, Goloso und lokale Aggregatoren in den Regionen haben in der Regel einen schwächeren Schutz. Einige von ihnen verwenden einfache HTML-Seiten, die mit Standardwerkzeugen geparst werden können. Dennoch ist auch hier die Blockierung nach IP bei häufigen Anfragen eine gängige Praxis.
Die wichtigsten Mechanismen zur Blockierung von Parsern bei Lieferaggregatoren:
- Blockierung der IP bei Überschreitung des Anfrage-Limits (Rate Limiting)
- Geoblocking – unterschiedliche Inhalte für verschiedene IPs anzeigen
- Analyse des User-Agent und der HTTP-Header
- Captcha bei verdächtiger Aktivität
- JavaScript-Rendering von Daten (SPA-Architektur)
- Verhaltensanalyse: Klickgeschwindigkeit, Scrollen, Pausen
Werkzeuge zum Parsen ohne Code und mit Code
Gute Nachrichten: Für das Parsen von Restaurantmenüs ist es nicht notwendig, programmieren zu können. Es gibt fertige No-Code-Lösungen, die die meisten Aufgaben bewältigen. Aber für die Arbeit mit SPA-Websites wie Yandex.Eda sind ernsthaftere Werkzeuge erforderlich.
No-Code-Werkzeuge (ohne Programmierung)
Octoparse – einer der beliebtesten visuellen Parser. Ermöglicht das Klicken auf Elemente der Seite und das Erstellen von Datensammlungsszenarien ohne Programmierung. Es gibt einen Cloud-Modus mit IP-Rotation. Geeignet für das Sammeln von Menüs von Websites mit einfacher Struktur.
ParseHub – ein ähnliches Werkzeug mit einer visuellen Benutzeroberfläche. Kann mit JavaScript-Seiten arbeiten, was es für moderne Aggregatoren anwendbar macht. Es gibt Unterstützung für Proxys.
Apify – eine Plattform mit fertigen „Schauspielern“ (fertigen Parsern für beliebte Websites). Für einige Lieferaggregatoren gibt es bereits fertige Lösungen in ihrem Marktplatz. Kann über eine Weboberfläche ohne Code gestartet werden.
Werkzeuge mit Code (für Entwickler)
Python + Requests + BeautifulSoup – klassische Kombination zum Parsen von statischen Seiten. Schnell, einfach, aber nicht in der Lage, mit JavaScript-Rendering umzugehen.
Python + Selenium oder Playwright – steuert einen echten Browser (Chrome/Firefox), daher kann es mit SPA-Websites, JavaScript und sogar einigen Captchas umgehen. Playwright gilt als modernere und schnellere Lösung. Genau diese Kombination funktioniert mit Yandex.Eda und Delivery Club.
Scrapy – professionelles Framework für großflächiges Parsen in Python. Unterstützt Anfragewarteschlangen, Middleware für Proxys, Export in verschiedene Formate. Für große Projekte zur Datensammlung über Restaurants ist es die optimale Wahl.
| Werkzeug | Ist Code erforderlich? | JS-Rendering | Proxys | Geeignet für |
|---|---|---|---|---|
| Octoparse | Nein | Teilweise | Integrierte Rotation | Regionale Aggregatoren |
| ParseHub | Nein | Ja | Externe Proxys | Die meisten Aggregatoren |
| Apify | Nein | Ja | Integrierte + externe | Yandex.Eda, Delivery Club |
| Selenium/Playwright | Ja (Python) | Ja | Externe Proxys | Alle Websites |
| Scrapy | Ja (Python) | Über Plugins | Externe Proxys | Skalierte Datensammlung |
Warum Parsing ohne Proxys nicht funktioniert
Dies ist eine Schlüssel-Frage. Viele angehende Analysten versuchen, den Parser direkt von ihrer IP-Adresse aus zu starten und stoßen sofort auf Blockierungen. Der Grund ist einfach: Lieferaggregatoren sehen Hunderte von Anfragen von einer Adresse in kurzer Zeit und blockieren sie automatisch. Die Wiederherstellung des Zugangs kann von mehreren Stunden bis zu mehreren Tagen dauern.
Proxys lösen dieses Problem, indem sie die Anfragen auf viele verschiedene IP-Adressen verteilen. Aus Sicht des Servers erscheinen die Anfragen als normaler Verkehr von verschiedenen Nutzern aus verschiedenen Orten. Aber nicht alle Proxys sind für diese Aufgabe gleich effektiv.
Residential Proxys
Residential Proxys verwenden IP-Adressen von echten Haushaltsnutzern. Aus Sicht von Yandex.Eda oder Delivery Club ist das eine normale Person, die das Menü eines Restaurants ansehen möchte. Solche Proxys werden bei richtiger Verwendung kaum blockiert. Sie sind die ideale Wahl für das Sammeln von Daten von großen Aggregatoren mit ernsthaftem Schutz.
Mobile Proxys
Mobile Proxys sind IP-Adressen von Mobilfunkanbietern (MTS, Beeline, MegaFon usw.). Ihr Merkmal ist, dass eine mobile IP von Tausenden von echten Nutzern gleichzeitig verwendet werden kann (über NAT), weshalb Websites mobile Adressen äußerst selten blockieren. Dies macht sie zu einer der zuverlässigsten Optionen für das Parsing mit hoher Anfragefrequenz.
Datacenter Proxys
Datacenter Proxys sind die schnellsten und günstigsten, aber ihre IPs werden leicht als „nicht menschlich“ identifiziert. Für regionale Aggregatoren mit einfacher Sicherheit sind sie geeignet, aber Yandex.Eda und Delivery Club blockieren sie ziemlich schnell. Dennoch funktionieren Datacenter Proxys gut für den ersten Zugriff auf die Struktur der Website und das Testen des Parsers vor dem produktiven Einsatz.
Welchen Proxy-Typ sollte man für das Parsing von Menüs wählen:
- Yandex.Eda, Delivery Club → Residential oder Mobile Proxys
- Regionale Aggregatoren (Chibbis usw.) → Datacenter Proxys oder Residential
- Datensammlung in ganz Russland (verschiedene Städte) → Residential Proxys mit Geotargeting nach Städten
- Hochfrequente Überwachung (jede Stunde) → Mobile Proxys mit Rotation
Schritt-für-Schritt-Anleitung zur Einrichtung eines Parsers mit Proxys
Lassen Sie uns ein praktisches Szenario durchgehen: Sie möchten täglich die Preise für Pizza bei 20 Wettbewerbern in Ihrer Stadt von Yandex.Eda sammeln. So richten Sie es Schritt für Schritt ein.
Schritt 1. Studieren Sie die API-Struktur des Aggregators
Öffnen Sie Yandex.Eda im Browser, drücken Sie F12 (DevTools), gehen Sie zum Tab Netzwerk und filtern Sie die Anfragen nach XHR/Fetch. Finden Sie die Seite des Restaurants und sehen Sie sich an, welche API-Anfragen beim Laden des Menüs gesendet werden. Normalerweise sieht das aus wie api/v1/menu?restaurantId=.... Notieren Sie sich die Header dieser Anfragen – sie werden für die Simulation benötigt.
Schritt 2. Wählen Sie das Werkzeug
Wenn Sie keinen Code schreiben – verwenden Sie Apify oder ParseHub. Wenn Sie in Python programmieren – wird Playwright die optimale Wahl für die Arbeit mit JavaScript-Websites sein. Installieren Sie das benötigte Werkzeug und stellen Sie sicher, dass es die Verbindung zu externen Proxys unterstützt.
Schritt 3. Besorgen Sie sich Proxys mit Geotargeting
Dies ist ein wichtiger Punkt. Yandex.Eda zeigt unterschiedliche Restaurants je nach Stadt an. Wenn Sie Menüs von Restaurants in Jekaterinburg parsen – benötigen Sie Proxys mit IPs aus Jekaterinburg. Residential Proxys mit Geotargeting nach Stadt ermöglichen es, genau den Inhalt zu erhalten, den ein lokaler Nutzer sieht. Geben Sie die benötigte Region bei der Proxy-Einrichtung an.
Schritt 4. Richten Sie die Proxy-Rotation ein
Verwenden Sie nicht einen Proxy für alle Anfragen. Richten Sie eine Rotation ein: Ändern Sie alle 5–10 Anfragen die IP. In Apify geschieht dies über die Einstellungen des Proxy-Pools. In Scrapy – über Middleware. In Playwright – indem Sie bei jeder Erstellung des Browserkontexts einen neuen Proxy übergeben. Je häufiger die IP wechselt, desto geringer ist das Risiko einer Blockierung.
Schritt 5. Richten Sie Verzögerungen zwischen den Anfragen ein
Fügen Sie zufällige Pausen zwischen den Anfragen hinzu – von 2 bis 8 Sekunden. Dies simuliert das Verhalten eines echten Nutzers. Machen Sie niemals Anfragen mit einem Intervall von weniger als 1 Sekunde – das ist der sicherste Weg zur Sperrung. Verwenden Sie in Scrapy den Parameter DOWNLOAD_DELAY und aktivieren Sie AUTOTHROTTLE_ENABLED.
Schritt 6. Richten Sie die richtigen Anfrage-Header ein
Übergeben Sie immer einen realistischen User-Agent (Browser-String), den Header Accept-Language (z.B. ru-RU,ru;q=0.9) und Referer. Anfragen ohne diese Header erscheinen als Bot und werden zuerst blockiert. Verwenden Sie aktuelle User-Agent-Strings von Chrome oder Firefox.
Schritt 7. Richten Sie einen Zeitplan und die Datenspeicherung ein
Führen Sie den Parser nachts (von 2:00 bis 6:00 Uhr) aus – die Serverlast bei Aggregatoren ist minimal, und verdächtiger Verkehr ist weniger auffällig. Speichern Sie die Daten in einer Datenbank (PostgreSQL, MySQL) oder zumindest in einer CSV mit Zeitstempeln. Dies ermöglicht es, eine Historie der Preisänderungen zu erstellen.
# Beispiel für die Proxy-Einrichtung in Playwright (Python)
from playwright.sync_api import sync_playwright
import random
import time
proxies = [
{"server": "http://proxy1.example.com:8080", "username": "user", "password": "pass"},
{"server": "http://proxy2.example.com:8080", "username": "user", "password": "pass"},
# ... mehr Proxys
]
def parse_restaurant_menu(url):
proxy = random.choice(proxies)
with sync_playwright() as p:
browser = p.chromium.launch()
context = browser.new_context(
proxy=proxy,
user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
)
page = context.new_page()
# Zufällige Verzögerung 2-8 Sekunden
time.sleep(random.uniform(2, 8))
page.goto(url)
page.wait_for_selector('.menu-item') # warten auf das Laden des Menüs
# Datensammlung über Gerichte
items = page.query_selector_all('.menu-item')
menu_data = []
for item in items:
name = item.query_selector('.item-name').inner_text()
price = item.query_selector('.item-price').inner_text()
menu_data.append({'name': name, 'price': price})
browser.close()
return menu_data
Typische Fehler und wie man sie vermeiden kann
Selbst bei richtiger Einrichtung der Werkzeuge stoßen viele auf Probleme beim Parsen von Daten über Essenslieferungen. Hier sind die häufigsten Fehler und deren Lösungen.
Fehler 1: Verwendung eines Proxys für alle Anfragen
Selbst der hochwertigste Residential Proxy wird blockiert, wenn über ihn Hunderte von Anfragen pro Tag an eine Website gesendet werden. Verwenden Sie immer einen Pool von mindestens 10–20 Proxys mit Rotation. Je mehr Restaurants Sie parsen, desto mehr Proxys benötigen Sie.
Fehler 2: Ignorieren des Geotargetings
Yandex.Eda und Delivery Club zeigen unterschiedliche Inhalte je nach Stadt des Nutzers an. Wenn Sie Daten über Restaurants in Nowosibirsk sammeln möchten, aber Moskauer Proxys verwenden – erhalten Sie Moskauer Daten. Überprüfen Sie immer, ob der Proxy der benötigten Region entspricht.
Fehler 3: Parsing von HTML anstelle von API
Anfänger-Parser versuchen, Daten aus dem HTML-Code der Seiten zu sammeln. Aber auf SPA-Websites (und Yandex.Eda ist genau so eine) sind die Daten nicht im HTML eingebettet – sie werden über API geladen. Es ist viel effektiver, den benötigten API-Endpunkt über DevTools zu finden und direkt darauf zuzugreifen. Das ist schneller, stabiler und benötigt weniger Ressourcen.
Fehler 4: Zu hohe Anfragefrequenz
Der Wunsch, Daten schneller zu sammeln, ist verständlich, führt aber zu sofortigen Blockierungen. Für die tägliche Preisüberwachung bei 50 Restaurants reicht es aus, den Parser einmal täglich mit Pausen von 3–5 Sekunden zwischen den Anfragen zu starten. Versuchen Sie nicht, den Prozess durch Verringerung der Verzögerungen zu beschleunigen.
Fehler 5: Fehlende Überwachung der Proxy-Funktionalität
Proxys können „sterben“ – sie werden blockiert, ihre Gültigkeit läuft ab. Wenn der Parser weiterhin mit einem blockierten Proxy arbeitet, erhalten Sie leere Daten oder Fehler, ohne das Problem zu bemerken. Richten Sie eine Überprüfung der Proxy-Funktionalität vor jedem Start ein und ersetzen Sie automatisch nicht funktionierende Adressen.
Fehler 6: Ignorieren von Änderungen in der Website-Struktur
Aggregatoren aktualisieren regelmäßig ihre Websites und APIs. Ein Parser, der vor einem Monat funktionierte, kann nach einem weiteren Update nicht mehr funktionieren. Richten Sie Fehlerbenachrichtigungen ein und überprüfen Sie die Funktionalität des Parsers mindestens einmal pro Woche. Halten Sie die Dokumentation zur Datenstruktur, die Sie sammeln, bereit.
Checkliste vor dem Start des Restaurantmenü-Parsers:
- ✅ Ein Pool von 10+ Proxys mit Rotation eingerichtet
- ✅ Proxys entsprechen der benötigten Stadt/Region
- ✅ Verzögerungen zwischen Anfragen von 3–8 Sekunden (zufällig)
- ✅ Realistischer User-Agent eingestellt
- ✅ Header Accept-Language und Referer hinzugefügt
- ✅ Datenspeicherung mit Zeitstempeln eingerichtet
- ✅ Fehlerüberwachung und Benachrichtigungen aktiviert
- ✅ Start für die Nachtzeit geplant
Fazit
Das Parsen von Restaurantmenüs und Lieferpreisen ist ein echtes Werkzeug für Wettbewerbsvorteile im Restaurantgeschäft und in der Marktanalyse im HoReCa-Sektor. Yandex.Eda, Delivery Club und andere Aggregatoren schützen aktiv ihre Daten, aber mit dem richtigen Ansatz – der sorgfältigen Auswahl der Werkzeuge, der Einrichtung von Verzögerungen und der Verwendung hochwertiger Proxys – funktioniert die Datensammlung stabil und ohne Blockierungen.
Die wichtigsten Erkenntnisse aus diesem Artikel: Verwenden Sie Werkzeuge mit Unterstützung für JavaScript-Rendering (Playwright, Apify), richten Sie die Proxy-Rotation ein, vergessen Sie nicht das Geotargeting und fügen Sie immer zufällige Pausen zwischen den Anfragen hinzu. Das sind die drei Säulen für stabiles Parsing.
Wenn Sie planen, regelmäßig Daten von Yandex.Eda, Delivery Club oder regionalen Lieferaggregatoren zu sammeln, empfehlen wir, auf Residential Proxys zu achten – sie bieten maximale Widerstandsfähigkeit gegen Blockierungen und unterstützen Geotargeting für russische Städte, was für die korrekte Datensammlung über Preise in bestimmten Regionen entscheidend ist.
```