Torna al blog

Parsing del menu dei ristoranti e dei prezzi di consegna: come superare i blocchi degli aggregatori senza perdere dati

Analizziamo come raccogliere automaticamente dati su menu e prezzi di consegna cibo da grandi aggregatori senza blocchi - dalla scelta degli strumenti alla configurazione dei proxy.

📅1 luglio 2026

Yandex.Eda, Delivery Club, SberMarket e decine di aggregatori regionali di consegna — un vero e proprio giacimento di dati per marketer, analisti e proprietari di attività ristorative. Ma non appena si inizia a raccogliere sistematicamente i prezzi e le posizioni del menu, i servizi iniziano a bloccare le richieste. In questo articolo analizzeremo come organizzare correttamente il parsing dei menu e dei prezzi di consegna, quali strumenti utilizzare e come i proxy aiutano a evitare i blocchi.

Perché estrarre il menu dei ristoranti e i prezzi di consegna

Il mercato della consegna di cibo in Russia è uno dei segmenti più dinamici dell'e-commerce. I prezzi dei piatti, le composizioni dei menu e le condizioni di consegna cambiano letteralmente ogni giorno. Monitorare manualmente queste modifiche è impossibile se si parla di decine di concorrenti o centinaia di posizioni. È qui che è necessaria la raccolta automatica dei dati.

Ecco chi utilizza il parsing dei menu e dei prezzi nella pratica:

  • Proprietari di ristoranti e caffè — monitorano i prezzi dei concorrenti nella loro zona per correggere rapidamente la propria politica dei prezzi.
  • Marketer delle catene di ristoranti — analizzano quali posizioni del menu i concorrenti promuovono attraverso promozioni e offerte speciali.
  • Analisti del mercato HoReCa — creano report sui prezzi medi delle categorie di piatti in diverse città e regioni.
  • Startup di aggregatori — raccolgono un database di ristoranti con menu e prezzi per il proprio catalogo.
  • Investitori e consulenti — valutano il contesto competitivo prima di aprire un nuovo locale o una franchigia.
  • Sviluppatori di applicazioni — creano database di piatti per applicazioni di conteggio calorie o pianificazione dei pasti.

Se lavori nel settore della ristorazione o ti occupi della sua analisi, il monitoraggio regolare dei prezzi dei concorrenti non è un lusso, ma una necessità. Una differenza di 30-50 rubli su un piatto popolare può influenzare direttamente la conversione in ordini. E senza automazione sarai sempre un passo indietro rispetto a chi ha già impostato la raccolta dei dati.

Quali dati raccogliere dagli aggregatori di consegna

Prima di configurare il parser, è importante capire quali dati ti servono. Gli aggregatori di consegna contengono diversi strati di informazioni, e ognuno di essi è utile per compiti diversi.

Tipo di dati Cosa include Per chi è utile
Menu e posizioni Nomi dei piatti, descrizioni, ingredienti, peso, Kcal Sviluppatori di applicazioni, dietologi
Prezzi dei piatti Prezzo attuale, prezzo scontato, cronologia delle modifiche Proprietari di ristoranti, marketer
Condizioni di consegna Costo di consegna, importo minimo dell'ordine, tempo di consegna Analisti, startup
Promozioni e offerte speciali Sconti, combo, piatti promozionali, offerte stagionali Marketer, intelligence competitiva
Valutazioni e recensioni Valutazioni dei locali, numero di recensioni, tag di qualità Investitori, consulenti
Dati geografici Indirizzi, zone di consegna, aree di presenza Analisti di mercato, franchising

Un monitoraggio dei prezzi nel tempo ha un valore particolare: se si raccolgono dati una volta al giorno per diversi mesi, si possono vedere schemi di formazione dei prezzi dei concorrenti — quando aumentano i prezzi, quando lanciano promozioni e come reagiscono a eventi esterni (festività, eventi sportivi, maltempo).

Caratteristiche di protezione di Yandex.Eda, Delivery Club e altri aggregatori

Grandi aggregatori di consegna proteggono attivamente i propri dati dalla raccolta automatica. E questo è comprensibile: il loro database di ristoranti e i prezzi attuali sono il loro vantaggio competitivo. Prima di configurare il parser, è necessario capire quali protezioni si incontreranno.

Yandex.Eda

Utilizza diversi livelli di protezione contemporaneamente. In primo luogo, viene utilizzata attivamente la geolocalizzazione: il contenuto del menu e i prezzi vengono visualizzati in base al tuo indirizzo IP — se l'IP è di Mosca, vedrai i ristoranti moscoviti. In secondo luogo, il sito funziona come SPA (Single Page Application) su React, il che significa che i dati vengono caricati tramite richieste API e non sono incorporati nell'HTML. In terzo luogo, in caso di attività sospette, si attiva Yandex SmartCaptcha. In caso di richieste frequenti da un unico IP, non ti verrà più consentito l'accesso al sito.

Delivery Club (SberMarket)

Architettura simile: i dati vengono forniti tramite API interne e non tramite HTML statico. Il servizio analizza i modelli comportamentali: se le richieste arrivano troppo velocemente o senza pause — blocco. Viene anche utilizzata l'analisi dell'User-Agent e delle intestazioni delle richieste. Intestazioni non standard sollevano immediatamente sospetti.

Aggregatori regionali

Servizi come Chibbis, Goloso e aggregatori locali nelle regioni di solito hanno una protezione più debole. Alcuni di essi utilizzano semplici pagine HTML, che possono essere estratte con strumenti standard. Tuttavia, anche qui il blocco per IP in caso di richieste frequenti è una pratica standard.

Principali meccanismi di blocco dei parser sugli aggregatori di consegna:

  • Blocco IP al superamento del limite di richieste (rate limiting)
  • Geoblocking — visualizzazione di contenuti diversi per diversi IP
  • Analisi dell'User-Agent e delle intestazioni HTTP
  • Captcha in caso di attività sospette
  • Rendering dei dati in JavaScript (architettura SPA)
  • Analisi del comportamento: velocità dei clic, scorrimento, pause

Strumenti per il parsing senza codice e con codice

Buone notizie: per il parsing dei menu dei ristoranti non è necessario saper programmare. Esistono soluzioni pronte senza codice che gestiscono la maggior parte dei compiti. Ma per lavorare con siti SPA come Yandex.Eda saranno necessari strumenti più seri.

Strumenti no-code (senza programmazione)

Octoparse — uno dei parser visivi più popolari. Consente di cliccare sugli elementi della pagina e costruire uno scenario di raccolta dati senza scrivere codice. Ha una modalità cloud con rotazione IP. Adatto per raccogliere menu da siti con struttura semplice.

ParseHub — strumento simile con interfaccia visiva. È in grado di lavorare con pagine JavaScript, il che lo rende applicabile per aggregatori moderni. Supporta i proxy.

Apify — piattaforma con "attori" pronti (parser pronti per siti popolari). Per alcuni aggregatori di consegna sono già disponibili soluzioni pronte nel loro marketplace. Può essere eseguito tramite interfaccia web senza codice.

Strumenti con codice (per sviluppatori)

Python + Requests + BeautifulSoup — combinazione classica per il parsing di pagine statiche. Veloce, facile, ma non gestisce il rendering JavaScript.

Python + Selenium o Playwright — gestisce un vero browser (Chrome/Firefox), quindi gestisce siti SPA, JavaScript e persino alcuni captcha. Playwright è considerato una soluzione più moderna e veloce. Questa combinazione funziona con Yandex.Eda e Delivery Club.

Scrapy — framework professionale per il parsing su larga scala in Python. Supporta code di richieste, middleware per proxy, esportazione in diversi formati. Per grandi progetti di raccolta dati sui ristoranti — scelta ottimale.

Strumento Serve codice? Rendering JS Proxy Adatto per
Octoparse No Parzialmente Rotazione integrata Aggregatori regionali
ParseHub No Proxy esterni La maggior parte degli aggregatori
Apify No Integrata + esterni Yandex.Eda, Delivery Club
Selenium/Playwright Sì (Python) Proxy esterni Qualsiasi sito
Scrapy Sì (Python) Attraverso plugin Proxy esterni Raccolta dati su larga scala

Perché senza proxy il parsing non funziona

Questa è una questione chiave. Molti analisti principianti provano a lanciare il parser direttamente dal proprio IP e si trovano subito di fronte a un blocco. La ragione è semplice: gli aggregatori di consegna vedono centinaia di richieste da un unico indirizzo in breve tempo e lo bloccano automaticamente. Il ripristino dell'accesso può richiedere da alcune ore a diversi giorni.

I proxy risolvono questo problema distribuendo le richieste tra molti indirizzi IP diversi. Dal punto di vista del server, le richieste sembrano traffico normale da diversi utenti in diverse località. Ma non tutti i proxy sono ugualmente efficaci per questo compito.

Proxy residenziali

I proxy residenziali utilizzano indirizzi IP di utenti domestici reali. Dal punto di vista di Yandex.Eda o Delivery Club — è una persona normale che ha aperto per vedere il menu di un ristorante. Questi proxy sono praticamente impossibili da bloccare se utilizzati correttamente. Scelta ideale per la raccolta di dati da grandi aggregatori con protezioni serie.

Proxy mobili

I proxy mobili sono indirizzi IP di operatori mobili (MTS, Beeline, MegaFon, ecc.). La loro particolarità è che un singolo IP mobile può essere utilizzato contemporaneamente da migliaia di utenti reali (tramite NAT), quindi i siti bloccano raramente gli indirizzi mobili. Questo li rende una delle opzioni più affidabili per il parsing con alta frequenza di richieste.

Proxy di data center

I proxy di data center sono i più veloci e economici, ma i loro IP vengono facilmente identificati come "non umani". Per aggregatori regionali con protezioni semplici, possono andare bene, ma Yandex.Eda e Delivery Club li bloccano abbastanza rapidamente. Tuttavia, i proxy di data center funzionano bene per la prima esplorazione della struttura del sito e il test del parser prima del lancio operativo.

Quale tipo di proxy scegliere per il parsing del menu:

  • Yandex.Eda, Delivery Club → proxy residenziali o mobili
  • Aggregatori regionali (Chibbis, ecc.) → proxy di data center o residenziali
  • Raccolta dati in tutta la Russia (diverse città) → residenziali con geotargeting per città
  • Monitoraggio ad alta frequenza (ogni ora) → proxy mobili con rotazione

Configurazione passo passo del parser con proxy

Analizziamo uno scenario pratico: vuoi raccogliere quotidianamente i prezzi della pizza da 20 concorrenti nella tua città da Yandex.Eda. Ecco come configurarlo passo dopo passo.

Passo 1. Studia la struttura dell'API dell'aggregatore

Apri Yandex.Eda nel browser, premi F12 (DevTools), vai alla scheda Network e filtra le richieste per XHR/Fetch. Trova la pagina del ristorante e guarda quali richieste API vengono inviate durante il caricamento del menu. Di solito è qualcosa come api/v1/menu?restaurantId=.... Prendi nota delle intestazioni di queste richieste — ti serviranno per l'emulazione.

Passo 2. Scegli uno strumento

Se non scrivi codice — utilizza Apify o ParseHub. Se scrivi in Python — Playwright sarà la scelta ottimale per lavorare con siti JavaScript. Installa lo strumento necessario e assicurati che supporti la connessione a proxy esterni.

Passo 3. Ottieni proxy con geotargeting

Questo è un punto importante. Yandex.Eda mostra ristoranti diversi a seconda della città. Se stai estraendo i menu dei ristoranti di Ekaterinburg — hai bisogno di proxy con IP di Ekaterinburg. I proxy residenziali con geotargeting per la città consentono di ottenere esattamente il contenuto che vede un utente locale. Specifica la regione necessaria durante la configurazione dei proxy.

Passo 4. Configura la rotazione dei proxy

Non utilizzare un solo proxy per tutte le richieste. Configura la rotazione: cambia IP ogni 5-10 richieste. In Apify questo si fa tramite le impostazioni del pool di proxy. In Scrapy — tramite middleware. In Playwright — passando un nuovo proxy ad ogni creazione del contesto del browser. Più spesso cambia l'IP, minore è il rischio di blocco.

Passo 5. Configura ritardi tra le richieste

Aggiungi pause casuali tra le richieste — da 2 a 8 secondi. Questo simula il comportamento di un utente reale. Non fare mai richieste con un intervallo inferiore a 1 secondo — questo è un modo sicuro per essere bannati. In Scrapy utilizza il parametro DOWNLOAD_DELAY e attiva AUTOTHROTTLE_ENABLED.

Passo 6. Configura le intestazioni corrette delle richieste

Invia sempre un User-Agent realistico (stringa del browser), l'intestazione Accept-Language (ad esempio, it-IT,it;q=0.9) e Referer. Le richieste senza queste intestazioni sembrano provenire da un bot e vengono bloccate per prime. Utilizza stringhe User-Agent aggiornate da Chrome o Firefox.

Passo 7. Configura la pianificazione e la memorizzazione dei dati

Esegui il parser durante la notte (dalle 2:00 alle 6:00) — il carico sui server degli aggregatori è minimo e il traffico sospetto è meno evidente. Salva i dati in un database (PostgreSQL, MySQL) o almeno in CSV con timestamp. Questo permetterà di costruire la cronologia delle variazioni dei prezzi.

# Esempio di configurazione dei proxy 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"},
    # ... più proxy
]

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()
        
        # Ritardo casuale di 2-8 secondi
        time.sleep(random.uniform(2, 8))
        
        page.goto(url)
        page.wait_for_selector('.menu-item')  # aspettiamo il caricamento del menu
        
        # Raccolta dati sui piatti
        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

Errori tipici e come evitarli

Anche con la configurazione corretta degli strumenti, molti si trovano ad affrontare problemi durante il parsing dei dati sulla consegna del cibo. Ecco gli errori più comuni e come risolverli.

Errore 1: Utilizzare un solo proxy per tutte le richieste

Anche il miglior proxy residenziale verrà bloccato se attraverso di esso passano centinaia di richieste al giorno verso un unico sito. Utilizza sempre un pool di almeno 10-20 proxy con rotazione. Più ristoranti stai estraendo, più proxy ti servono.

Errore 2: Ignorare il geotargeting

Yandex.Eda e Delivery Club mostrano contenuti diversi a seconda della città dell'utente. Se vuoi raccogliere dati sui ristoranti di Novosibirsk, ma utilizzi proxy moscoviti — otterrai dati moscoviti. Controlla sempre che il proxy corrisponda alla regione necessaria.

Errore 3: Parsing HTML invece di API

I parser principianti cercano di raccogliere dati dal codice HTML delle pagine. Ma sui siti SPA (e Yandex.Eda è proprio così) i dati non sono incorporati nell'HTML — vengono caricati tramite API. È molto più efficace trovare il giusto endpoint API tramite DevTools e contattarlo direttamente. Questo è più veloce, stabile e richiede meno risorse.

Errore 4: Frequenza di richieste troppo alta

La voglia di raccogliere dati più velocemente è comprensibile, ma porta a un immediato blocco. Per il monitoraggio quotidiano dei prezzi in 50 ristoranti, è sufficiente eseguire il parser una volta al giorno con pause di 3-5 secondi tra le richieste. Non cercare di accelerare il processo riducendo i ritardi.

Errore 5: Mancanza di monitoraggio della funzionalità dei proxy

I proxy possono "morire" — vengono bloccati, scadono. Se il parser continua a lavorare con un proxy bloccato, ottieni dati vuoti o errori senza accorgerti del problema. Configura un controllo della funzionalità dei proxy prima di ogni esecuzione e una sostituzione automatica degli indirizzi non funzionanti.

Errore 6: Ignorare le modifiche nella struttura del sito

Gli aggregatori aggiornano regolarmente i propri siti e API. Un parser che funzionava un mese fa potrebbe smettere di funzionare dopo un aggiornamento. Configura notifiche sugli errori e controlla la funzionalità del parser almeno una volta alla settimana. Tieni a disposizione la documentazione sulla struttura dei dati che stai raccogliendo.

Checklist prima di lanciare il parser del menu dei ristoranti:

  • ✅ Pool di 10+ proxy con rotazione configurato
  • ✅ I proxy corrispondono alla città/regione necessaria
  • ✅ Ritardi tra le richieste di 3-8 secondi (casuali)
  • ✅ User-Agent realistico impostato
  • ✅ Intestazioni Accept-Language e Referer aggiunte
  • ✅ Memorizzazione dei dati con timestamp configurata
  • ✅ Monitoraggio degli errori e notifiche attivate
  • ✅ Lancio programmato per le ore notturne

Conclusione

Il parsing dei menu dei ristoranti e dei prezzi di consegna è uno strumento reale di vantaggio competitivo nel settore della ristorazione e nell'analisi del mercato HoReCa. Yandex.Eda, Delivery Club e altri aggregatori proteggono attivamente i propri dati, ma con l'approccio giusto — una scelta oculata degli strumenti, la configurazione dei ritardi e l'uso di proxy di qualità — la raccolta dei dati funziona in modo stabile e senza blocchi.

Le conclusioni chiave di questo articolo: utilizza strumenti con supporto per il rendering JavaScript (Playwright, Apify), configura la rotazione dei proxy, non dimenticare il geotargeting e aggiungi sempre pause casuali tra le richieste. Questi sono i tre pilastri di un parsing stabile.

Se prevedi di raccogliere regolarmente dati da Yandex.Eda, Delivery Club o aggregatori regionali di consegna, ti consigliamo di prestare attenzione ai proxy residenziali — offrono la massima resistenza ai blocchi e supportano il geotargeting per le città russe, il che è fondamentale per una corretta raccolta dei dati sui prezzi in specifiche regioni.