I migliori metodi per estrarre automaticamente notizie, ricette e altre informazioni dai siti web

Il web è una miniera di informazioni, il cui contenuto cresce a dismisura ogni giorno. Una necessità che ci troviamo ad avere frequentemente è quella di estrarre e salvare contenuti e dati. In passato ho trattato l’estrazione dei contenuti audio e video, ma esistono anche moltissimi contenuti testuali, come notizie, ricette o tabelle con dati numerici.

Inoltre è molto utile essere notificati quando il contenuto di un sito cambia, per esempio pubblicando un nuovo articolo o aggiungendo delle foto a una galleria. Tuttavia, non tutti i siti offrono dei feed RSS già pronti.

Vi avevo anticipato che avrei trattato questo argomento al Linux Day 2015 e finalmente è pronto il filmato del mio intervento. 🙂 Riporto qui la descrizione e il video del talk:

Il web è pieno di informazioni utili: non solo dati numerici, ma anche notizie, tutorial, ricette e gallerie di immagini. Tuttavia, spesso i siti web rendono complicato estrarre le informazioni che ci interessano per poi elaborarle o convertirle. Inoltre, a volte è utile tenere traccia degli aggiornamenti che vengono pubblicati su una certa pagina.

In questo talk vengono analizzati strumenti e tecniche per risolvere efficacemente questo problema tramite il web scraping.

Siamo stati costretti ad usare una telecamera di riserva, per problemi tecnici con quella principale. Per questo il video è di scarsa qualità, ma ci sono le slide in sovrimpressione che compaiono quando necessario, quindi è tutto leggibile.

Se volete, potete scaricare le slide in PDF dal sito del GrappaLUG, cliccando qui.

Convertire una presentazione in immagini, includendo le animazioni intermedie

Ieri ho iniziato il lavoro di montaggio video del mio intervento sull’estrazione di dati dalle pagine web. Come gli anni scorsi, anche quest’anno ho parlato utilizzando una presentazione Impress per accompagnare il discorso.

Dato che il video di me che gesticolo è di secondaria importanza, l’intento è mettere in risalto le slide. Per questo ho pensato di convertire tutte le slide in immagini per poi usarle in fase di montaggio. Le slide verranno mostrate a schermo pieno al posto del video, specialmente nei passaggi più importanti, mentre si sentirà la traccia audio per la mia voce.

In linea di principio, avrei potuto creare un PDF della presentazione e convertire quello in tante immagini, una per pagina. Tuttavia, in diverse slide ci sono alcuni punti che compaiono uno alla volta e questo viene perso durante la conversione in PDF.

Animazione del testo all'interno della stessa pagina
Animazione del testo all’interno della stessa pagina

Per questo motivo, ho deciso di seguire un approccio diverso:

  1. mostrare la prima slide
  2. catturare la schermata
  3. andare alla prossima slide
  4. ripetere il procedimento

Tutto questo in modo completamente automatico, ad eccezione dell’atto di terminare la procedura dopo l’ultima slide. Per ottenere il risultato desiderato, ho creato un brevissimo script in Python che utilizza il modulo pyautogui per automatizzare la pressione dei tasti, come suggerito qui. Un’altra funzionalità utile di questo modulo è la facoltà di catturare screenshot, così abbiamo tutto il necessario! 🙂

Prerequisiti

Il modulo pyautogui è sostanzialmente multipiattaforma, in quanto fa tutto il “duro lavoro” di adattamento per eseguire le stesse operazioni sui vari sistemi operativi, le quali normalmente richiederebbero modi diversi di essere compiute.

Tuttavia, è necessario installare anche alcuni componenti aggiuntivi per Linux che verranno utilizzati dal modulo per portare a termine ciò che ci serve. Pertanto, installiamo il modulo nel nostro profilo utente e i pacchetti necessari nel sistema con i comandi:

sudo apt-get install python-xlib python-tk python-pil
pip install --user pyautogui
sudo apt-get install scrot

Il primo pacchetto serve per la simulazione dei tasti e in generale il funzionamento base del modulo. Il secondo pacchetto sarebbe opzionale, ma per noi è necessario perché vogliamo anche che vengano catturati gli screenshot.

Catturare le schermate

A questo punto potete creare una nuova cartella screen con dentro uno script Python, chiamato ad esempio cattura.py. Il contenuto è questo:

#!/usr/bin/env python

import pyautogui
import time

# Attesa iniziale
time.sleep(10)

numero = 1

# Premere Ctrl+C alla fine della presentazione
while True:
    im = pyautogui.screenshot()
    im.save('screen_%03i.png' % numero)
    pyautogui.press('right')
    # Attesa transizione/animazione
    time.sleep(3)
    numero += 1

L’idea di base è semplice. Quando lo script parte, sta fermo per 10 secondi, così potete cambiare finestra e avviare la presentazione con LibreOffice (oppure Calligra Suite). Passato questo tempo, inizia la cattura delle schermate con il nome screen_001.png.

Tra una schermata e l’altra c’è una pausa di 3 secondi, in modo da far finire eventuali effetti di transizione (ad esempio le dissolvenze). Avviate lo script con il terminale, cambiando directory e lanciando il file Python appena creato:

cd /percorso/di/slide/cattura.py
python cattura.py

Poi avviate subito la presentazione e attendete senza toccare nulla. 😉 In poco tempo inizierete a vedere il computer che “va da solo” cambiando slide e attivando le animazioni fino all’ultima pagina.

Vi ricordo che, al posto di digitare tutto il percorso della directory che contiene lo script, potete fare drag’n’drop dell’icona della cartella slide dentro al terminale, dopo aver digitato il comando cd seguito da uno spazio. 😉

Quando la presentazione arriva alla fine, tenete conto che lo script continuerà a premere freccia destra ogni 3 secondi, catturando screenshot. Perciò riaprite il terminale ridotto ad icona e premete i tasti Ctrl+C per terminare il ciclo infinito.

Troverete le schermate (in formato PNG) nella cartella precedentemente creata.

Schermate ottenute con il procedimento descritto
Schermate ottenute con il procedimento descritto

Ritocchi finali

È probabile che, alla fine delle schermate ottenute, ci sia qualche file in più che mostra il vostro desktop dopo aver finito la presentazione ma prima di aver terminato lo script. In questo caso, è sufficiente cancellare le immagini di troppo. 😉

Nel mio caso, ho notato che la funzione di presentazione di LibreOffice lasciava un leggero margine nero in basso e a destra:

Margine nero lasciato da LibreOffice
Margine nero lasciato da LibreOffice

Il margine, misurato con GIMP, risultava di 1 pixel in basso e 2 pixel a destra. Per correggere questo problema ho usato ImageMagick. Il comando, che modifica direttamente le immagini originali, è questo:

mogrify -crop -2-1 screen_*.png

Attenzione che ciò crea delle copie di backup nascoste nella stessa cartella, ad esempio il file screen_001.png verrà copiato con il nome di screen_001.png~ e solo in seguito modificato. Se usate una cartella solo per le slide e poi la eliminate tutta, anche le copie nascoste saranno ripulite. In caso contrario, fate attenzione a non lasciare tracce inutili. 🙂

Relazione e slide sulla Network Forensics

Nell’ambito del corso di Reti di Calcolatori quest’anno ci è stato chiesto di scrivere una relazione su un tema a nostra scelta. Io ho optato per la Network Forensics, la branca dell’informatica forense che si occupa delle reti. Di seguito trovate le mie slide:

Si tratta comunque di slide che riassumono la relazione vera e propria, la quale è scaricabile cliccando qui. L’informatica forense è un altro tipico esempio di un settore in cui Linux regna incontrastato. 🙂

Matematica di base e avanzata con Sage — slide e video demo del mio talk

Al Linux Day 2012 svoltosi a Bassano del Grappa (VI) il 27 ottobre oltre ad aver trattato Impress, ho parlato anche di Sage e delle varie funzionalità matematiche che offre questo programma. Di seguito trovate la mia presentazione, in mezzo alla quale potete trovare quattro piccole video dimostrazioni di breve durata (da 1 a 3 minuti ciascuna).

Se preferite scaricare le slide, potete ottenerne una copia in PDF cliccando qui, e poi guardare le varie demo su Youtube:

Per quanto riguarda il frattale, trovate il codice sorgente discusso e commentato nel forum dei Giovani Matematici di Vicenza.

Presentazioni di qualità professionale con Impress — slide e video demo del mio talk

Al Linux Day 2012 svoltosi a Bassano del Grappa (VI) il 27 ottobre ho trattato la tematica delle buone pratiche sulle presentazioni e come applicarle concretamente a Impress. Di seguito trovate la mia presentazione, e alla fine una video dimostrazione pratica che dura circa 15 minuti.

Se preferite scaricare le slide, potete ottenerne una copia in PDF cliccando qui, e poi guardarvi la dimostrazione su Youtube.

Slideshare Downloader: script per scaricare facilmente le presentazioni da Slideshare

Da un po’ di tempo mi frullava per la testa l’idea di aggirare una limitazione di Slideshare, il famoso sito per condividere presentazioni. Infatti non tutte le presentazioni sul sito si possono scaricare, in quanto l’autore può decidere di disattivare il download. Quelle che lo permettono invece, dopo il login (l’iscrizione è gratuita) consentono di scaricare il file in formato originale PDF oppure PowerPoint.

Fino a qualche tempo fa esisteva un sito web eccezionale, Slidzy, di cui ora rimane solo il Twitter abbandonato. Slidzy permetteva di scaricare il file originale senza registrazione a partire da un url di Slideshare qualsiasi (anche con download disattivato). Probabilmente poi Slideshare ha modificato il funzionamento del sito e questo sistema non è più praticabile.

Qualcuno potrebbe obiettare che se il download è stato disattivato un motivo c’è: la volontà dell’autore. Sarebbe quindi inopportuno andare contro ad essa e tentare di scaricare lo stesso una determinata presentazione. Questo è vero, ma ci sono diversi casi in cui può essere del tutto legittimo. Pensateci un attimo. Se uno studente universitario come me volesse studiarsi una presentazione sulla funzionalità Canvas di HTML5 (a parte i loghi discutibili nella terza slide) lo potrebbe fare finché davanti a un computer e connesso a Internet.

Ma se si volesse salvare la presentazione per guardarla senza internet oppure su un altro dispositivo, anche un cellulare? Qui casca il palco (senza considerare che ci sono anche presentazioni in Creative Commons non scaricabili, mentre la licenza permette di riprodurle, ecco un esempio). Da questa considerazione ho creato uno script, e l’avevo pronto già a settembre, pensate. Il problema è che era scritto in modo veramente “rude” e non faceva nessun controllo sulle operazioni che effettuava, sicché prima di rilasciare una cosa del genere ci ho pensato bene. Alla fine l’ho riscritto ed è venuto fuori Slideshare Downloader.

Scaricare il file originale probabilmente è impossibile, ma il mio script usa un approccio diverso… Se non posso scaricare la presentazione, la posso almeno “fotocopiare”. Di fatto scarica ogni singola slide in formato JPG, cioè una semplice immagine. È questo il tipo di dato che viene presentato a chi naviga con un dispositivo mobile. Alla fine lo script unisce tutte le immagini in un PDF, permettendo perlomeno di visualizzare la presentazione dappertutto (d’accordo, senza poter selezionare e copiare il testo, ma è meglio di nulla).

Potete effettuare il download cliccando qui. Lo script è rilasciato con licenza GPLv3 ed è in inglese (per quel poco di testo che ha) in modo da permettere a più persone di usarlo.

Ricordate che lo script ha bisogno di alcune cose per funzionare, in particolare ImageMagick, che potete cercare nel gestore di pacchetti della vostra distribuzione. Inoltre dovete dare i permessi di esecuzione allo script.

A preparativi fatti l’utilizzo è molto semplice. Lo script accetta come parametro l’url alla pagina di Slideshare e scarica le slide alla larghezza di 1024 pixel. Ecco un esempio:


./slideshare-downloader.sh http://www.slideshare.net/robhawkes/html5-canvas-hack-night-the-future-of-graphics-on-the-web

A questo punto basta aspettare seguendo a schermo il processo in corso, alla fine restituirà qualcosa del genere:


The PDF has been generated.
Find your presentation in: "/home/andrea/Scrivania/html5-canvas-hack-night-the-future-of-graphics-on-the-web/html5-canvas-hack-night-the-future-of-graphics-on-the-web.pdf"

A questo punto non vi resta che mettere da parte il PDF dove preferite! Ovviamente ricordate sempre che sono immagini, quindi non potete fare uno zoom esagerato e con alcuni lettori PDF non sempre le immagini vengono “sfumate” in modo nitido.

Fatemi sapere se usate questo script e se vi è utile!

Aggiornamento 27/09/2012: lo script è rimasto un po’ abbandonato e poco utilizzabile anche per via del fatto che si basava su un tool di conversione dal formato Flash che non è più disponibile nei repository delle maggiori distribuzioni. Grazie anche ai suggerimenti di Massimiliano, un mio lettore, ho ripreso in mano lo script e l’ho aggiornato in modo che scarichi direttamente dei file in formato JPG.

Aggiornamento 26/12/2014: Massimo Grandesso mi ha gentilmente inviato un aggiornamento allo script. In questo modo funziona con il nuovo layout di SlideShare.