ondata / albo-pop

Un piccolo e semplice esperimento, che ha come obiettivo quello di rendere più "popolari" gli Albi Pretori
http://albopop.it/
MIT License
16 stars 9 forks source link

Scraping usando Drupal #58

Open loryluny opened 8 years ago

loryluny commented 8 years ago

Salve a tutti, per chi non mi conoscesse, non sono un programmatore, ma al massimo un "Drupal builder"... e finalmente negli ultimi 4 giorni ho trovato il tempo per iniziare seriamente a sperimentare le potenzialità di scraping tramite Drupal, e per qualche ora mi ero illuso di poter creare agevolmente una "AlboPop Machine" :-)

Al momento ho creato una piattaforma nella quale ho caricato tutti i comuni d'Italia, e (in base al sogno), per ogni comune c'è una voce di menù che permette di creare un "feeds importer" con i paths personalizzabili.

Se i paths trovano i dati li importano e tramite un mapping, vengono ricreate e salvate sul database le "affissioni" relative ad ogni albo. Da questi dati sono riuscito a generare facilmente i feed Rss, Xml e json.

Sono partito dall'esempio di Altavilla Milicia, e sono riuscito nell'impresa, ma scontrandomi con una serie di difficoltà. La prima è stata riguardante XPath, ho impiegato mezza giornata per capire come funzionasse (firebug mi dava un percorso e google chrome un altro), ma alla fine, grazie ad alcuni moduli di Drupal, ho utilizzato http://querypath.org/ che utilizza lo stesso sistema di selettori del CSS, con il quale mi trovo più a mio agio.

Dopo aver scoperto che dovevo indicare anche un "context" che si ripete all'interno della struttura dei dati e dal quale estrarre i singoli dati, in pratica la riga di tabella, mi sono reso conto che non tutti i dati, nel caso di Altavilla Milicia il link, sono disponibili "in chiaro". Dovevo combinare due dati di cui uno, l'url di base al quale aggiungere l'id dell'affissione, neanche presente nella pagina.

A questo punto è tramontata l'idea di uno scraper universale, e ho capito che avrei dovuto individuare più modelli, per far entrare in gioco anche l'url di base dal quale ricavare i link alle varie affissioni.

Ho avuto altri gravi problemi nel riconoscimento e nella gestione corretta delle date, per via del fatto che questi moduli utilizzano prevalentemente i modelli inglesi con mese/giorno/anno, ma sono riusciti a superarli.

Al momento il risultato parziale, presente su un mio vecchio server di test, e da ricopiare su una nuova installazione pulita è questo http://dev-renurbanfeatures.pantheon.io/

In pratica con tutta la procedura semi automatica inserendo solo un url base dell'albo, un url per gestire la paginazione, e un url base per le singole affissioni, in pochi minuti si riesce ad importare un albo modello "Halley Informatica". Ho provato su tre comuni che lo utilizzano, Altavilla Milicia, Montelibretti e Trinitapoli. Adesso sulla base delle cose che ho imparato, potrei provare a creare altri modelli da semiautomatizzare. Spero che questo lavoro, ampiamente migliorabile, possa servire per semplificare e velocizzare la "liberazione" di tanti albi pretori....

Appena avrò modo spiegherò dettagliatamente come funziona questa mini piattaforma, per il momento vi faccio un elenco dei moduli che ho utilizzato. La settimana prossima ricopio tutto "in bella", sperando di poter aggiungere qualche altro modello, e metto a disposizione codice e database.

Ecco i moduli: Drupal 7 Core Administration menu https://www.drupal.org/project/admin_menu Automatic Entity Label https://www.drupal.org/project/auto_entitylabel Entity API https://www.drupal.org/project/entity Entity reference https://www.drupal.org/project/entityreference Entity reference prepopulate https://www.drupal.org/project/entityreference_prepopulate EVA: Entity Views Attachment https://www.drupal.org/project/eva Feeds https://www.drupal.org/project/feeds Feeds Crawler https://www.drupal.org/project/feeds_crawler Feeds extensible parsers https://www.drupal.org/project/feeds_ex Feeds Tamper https://www.drupal.org/project/feeds_tamper Job Scheduler https://www.drupal.org/project/job_scheduler QueryPath https://www.drupal.org/project/querypath Token https://www.drupal.org/project/token Views https://www.drupal.org/project/views Views Datasource https://www.drupal.org/project/views_datasource Views RSS https://www.drupal.org/project/views_rss

aborruso commented 8 years ago

2016-01-21 15:37 GMT+01:00 loryluny notifications@github.com:

Appena avrò modo spiegherò dettagliatamente come funziona questa mini piattaforma, per il momento vi faccio un elenco dei moduli che ho utilizzato. La settimana prossima ricopio tutto "in bella", sperando di poter aggiungere qualche altro modello, e metto a disposizione codice e database.

88 minuti di applausi, ma veramente :)

Mi piace molto anche l'email che da un quadro molto chiaro. Sulle difficoltà di cui parli, ci abbiamo sbattuto un po' tutti e da tutte le strade prese ad oggi (kimono, bash, Python, R, PHP, Google App Script, ecc.).

Il sistema/prodotto che hai messo in piedi mi sembra molto interessante e vorrei tanto "toccarlo con mano". Una nuovo incontro AlboPOP a Palermo e magari in hangout con chi non potrà esserci?

Magari si apre un nuovo thread.

Grandi complimenti, tutto questo è da raccontare

Andrea Borruso website: http://blog.spaziogis.it GEO+ geomatica in Italia http://bit.ly/GEOplus http://bit.ly/GEOplus

38° 7' 48" N, 13° 21' 9" E, EPSG:4326

"cercare e saper riconoscere chi e cosa, in mezzo all’inferno, non è inferno, e farlo durare, e dargli spazio"

Italo Calvino

loryluny commented 8 years ago

Grazie :-). Massima disponibilità su tutto!

gcardaci commented 8 years ago

Per smanettare su Drupal, a disposizione.

2016-01-21 16:47 GMT+01:00 loryluny notifications@github.com:

Grazie :-). Massima disponibilità su tutto!

— Reply to this email directly or view it on GitHub https://github.com/aborruso/albo-pop/issues/58#issuecomment-173612188.

loryluny commented 8 years ago

@gcardaci Ottimo, così almeno non mi sento più così solo :-)