Orari delle lezioni, aule, appelli, mense, biblioteche, autobus, treni, bici, avvisi dell'ateneo e molto altro arrivano da ben 13 fonti differenti. E, ovviamente, ognuna parla una lingua diversa.
Tredici fonti, tredici linguaggi
- Alcune espongono API vere e proprie.
- Altre hanno API non documentate, utilizzate direttamente dai loro siti.
- Altre ancora richiedono scraping dell'HTML, parsing, normalizzazione e gestione di identificativi che possono cambiare senza preavviso.
La soluzione? L'app non deve sapere niente di tutto questo
L'app parla con un solo backend. È il backend a interrogare le varie fonti, fare scraping dove serve, utilizzare le API quando esistono, normalizzare i dati e restituirli attraverso delle normali API REST.
In questo modo una mensa, un'aula, un appello o una biblioteca smettono di essere “quel dato preso da quel particolare sito in quel particolare formato”. Diventano semplicemente dati.
Tutta la parte fragile resta dove deve stare
- Se una pagina cambia struttura, si aggiorna il parser e si fa un deploy.
- Se una fonte temporaneamente non risponde, può entrare in gioco la cache e continuare a servire l'ultima risposta valida.
- Se più utenti chiedono la stessa informazione, non è necessario moltiplicare inutilmente le richieste verso la fonte originale.
La parte più bella
Ed è forse questa la parte più bella del web scraping: trasformare fonti pensate per essere consultate da persone in dati strutturati pensati per essere utilizzati dal software.
Il web è pieno di dati. Il vero lavoro è renderli affidabili, coerenti e utilizzabili.