Back to Posts

Cercare il tuo Master con Python

Posted in datascience

Ovvero: le oscure stregonerie dello scraping

Da qualche tempo mi sono messo a studiare Python, con l’obiettivo di fare scraping, ovvero “grattare” dei dati dal web per ottenerli belli puliti in un formato analizzabile. Questo linguaggio già ti sembra una manna dal cielo se in vita tua hai visto solo del Javascript, ma non avevo idea della quantità di librerie utili per fare Scraping che fanno una marea di cose in automatico. E davvero, come scrive Ryan Mitchell nel suo “Web Scraping with Python”: “If programming is magic, then web scraping is wizardry”.

Giusto per raccontare un piccolo esperimento. Qualche settimana fa, grazie all’insonnia, mi trovo ad un orario improbabile su mastersportal.eu, un sito che raccoglie informazioni sui Master universitari in tutto il mondo. Un’ottima risorsa, davvero ben navigabile, con un bel sistema di filtri: per paese, costo, ricerca di parole chiave, tempi, eccetera. Per ogni pagina, però, compaiono sei o sette risultati. Così se la ricerca è molto generale, ad esempio inserendo solo “Economics” come ricerca, e “inglese” come lingua ci sono 147 pagine per 1468 risultati. Non che sia un problema da molto per il 99% delle persone, che semplicemente applicheranno più filtri. Ma, dato che la sfida mi intrigava, e dato che stavo giusto studiando questa roba, mi sono detto, perché non grattare tutte queste informazioni e farci una bella tabella excel con cui smanettare?

Prima ho provato con BeautifulSoup, che è molto facile da imparare, ma non funziona sui contenuti generati tramite AJAX. Al livello successivo c’è Selenium, che è costruito per questo genere di cose. Anche se la curva di apprendimento è un po’ più ripida inizialmente, credo ne valga la pena. Può dare belle soddisfazioni.

Il programma è abbastanza lento, (automatizza ciò che faremmo a mano pagina per pagina). Ci vogliono circa 13 secondi a pagina, ovvero una mezz’oretta buona per estrarre tutti i risultati (dipende dalle prestazioni del pc). Ma ovvio che aggiungendo un filtro in più i risultati possono essere ridotti notevolemente. Nel mio caso, aggiungendo un filtro sui costi (minore di 20000), i risultati diventano circa 700 e le pagine 66 (tra l’altro, a me ha sorpreso!). Questi li gratta in meno di dieci minuti. Occorre alla fine, trasporre la tabella (invertire le righe con le colonne, cosa che può facilmente essere fatta con un tool online). Ma eccolo qui, un bel CSV maneggiabile.

Qui c’è il codice. Su un gran numero di risultati è più facile che sbagli: sicuramente potrebbe essere scritto meglio, e se mi verrà qualche buona idea magari lo migliorerò. Per utilizzarlo basta solo cambiare l’URL di MastersPortal con quello che ci interessa, have fun.

The internet is the most incredible infrastracture ever built. Human beings learn through dialogues. Open sourcing your ideas means enhancing them. I keep my brain alive reading, writing and coding. Economics student, I'm (slowly) teaching myself Data Science. Hacktivism with www.onData.it folks.

Read Next

Facebook's Birthday Liker Script

ActionAid

fights for food, women, a right governance

GET INVOLVED