mojtaba/amini
Home/Articoli/Data · Ethics
Jul 2024·6 min di lettura·Data · Ethics

Scrapare check24.de senza diventare il cattivo

Note dal progetto dati di GreenPocket: come fare scraping su larga scala in modo etico, legale, e senza far cadere il sito sorgente.

In GreenPocket il mio compito era estrarre dati di tariffe energetiche tedesche da check24.de — un sito di comparazione con milioni di prezzi su migliaia di CAP. Il commerciale aveva bisogno di una vista regionale per orientare la strategia. L'approccio ingenuo è lanciare cinquanta scraper paralleli e bruciare la sorgente. È anche il modo più rapido per farsi causare e diventare il caso da webinar del prossimo trimestre.

Il progetto è partito con una review legale. La legge tedesca ha un'eccezione specifica per "analisi dati a fini di ricerca commerciale" sotto §44b UrhG, a tre condizioni: dati accessibili pubblicamente senza aggirare misure tecniche; uso analitico, non ripubblicazione; rispetto dei rate limit e del robots.txt. La review legale stava in una pagina. Ha definito i vincoli tecnici di tutto il progetto.

Lo scraper era quasi noioso. Python, async con httpx, una request al secondo per CAP, User-Agent che identificava azienda e contatto. Retry su 429 con backoff esponenziale. State file persistente. Il crawl completo ha richiesto undici giorni per diecimila CAP. Avremmo potuto farlo in undici ore parallelizzando. Undici giorni era la risposta giusta, perché undici ore sarebbero state un DoS per il rate-limiter di check24.

Il lavoro interessante stava a valle. I dati raw sono sporchi: i provider rinominano i piani, i piani spariscono a metà settimana, lo stesso piano appare con SKU diversi. Abbiamo costruito un layer di normalizzazione con una "tariff key" canonica — CAP + provider + plan-family + tipo contratto. La chiave canonica ha reso possibile l'analisi longitudinale. Senza, ogni snapshot settimanale sembrava una popolazione diversa di piani.

Il deliverable finale: una dashboard regionale che mostra dove il commerciale deve concentrare la spesa di acquisizione, con refresh settimanale. Il lavoro tecnico era una frazione del progetto. La review legale, la disciplina sul rate limit, il layer di normalizzazione e la documentazione che provava che facevamo tutto questo — quello era il progetto.

Lezione che molti ingegneri ML imparano tardi: in lavori di dati, "abbiamo l'autorità legale per operare su questi dati" è un requisito di prima classe, non una nota a piè di pagina.