Meglio tordi, che mais.<br><br>Daniele<br>
<br>
<blockquote>
----Messaggio originale----<br>Da: fabrix.xm@gmail.com<br>Data: 4-giu-2016 9.57<br>A: "Gruppo Linux Como"<gl-como@lists.linux.it><br>Ogg: [gl-como] Automatizzami il web col serpentone<br><br>Oilà<br><br>Questa è la mail che avrei dovuto scrivere la settimana scorsa. Come <br>si dice, meglio tardi che mai.<br><br>Giovedì 26 maggio abbiamo visto come usare python per recuperare <br>informazioni in automatico da una pagina web.<br>In particolare abbiamo deciso di estrarre l'elenco delle notizie in <br>prima pagina su Hacker News[0]<br><br>Per fare cio', abbiamo usato due librerie python molto utili:<br><br>- Requests[1], per fare richieste HTTP<br>- BeautifulSoup[2], per estrarre i dati dalle pagine html<br><br>Usiamo BeautifulSoup perchè:<br><br>- le pagine html non sono xml valido, per cui un parser xml standard <br>fallirebbe miseramente<br>- le espressioni regolari _non si usano_ per fare il parsing di html[3]<br>- ha un bel nome<br><br>Il codice del nostro piccolo esperimento lo trovate qui<br><br>http://codepad.org/FtEd8EO2<br><br>Per evitare di fare mille richieste inutili a <br>https://news.ycombinator.com/ mentre testavamo lo script, abbiamo usato <br>firefox per salvare la pagina in un file locale. Per utilizzare i dati <br>"live" basta togliere il commento dalle righe 6-7 e commentare 9-10.<br><br>C'è da notare come il nostro codice non controlli nessun tipo di <br>errore: per semplicità si assume che la richiesta della homepage al <br>server ritorni sempre senza errori. Si lascia al lettore il compito di <br>completare questa parte.<br><br>Nel nostro esempio abbiamo usato BeautifulSoup 4, alcune distro hanno <br>nei repo la versione 3. Per ovviare a questo problema, possiamo usare <br>virtualenv.<br><br>Virtualenv crea una struttura di cartelle in una posizione definita <br>dall'utente, che continene tutto quello che serve a python per <br>funzionare e che permette di installare pacchetti python localmente, <br>senza interessare il sistema, e senza richiedere i permessi di root.<br><br>1. si installa virtualenv dal gestore di pacchetti.<br>2. creiamo una cartella per i nostri test<br><br>    ~$ mkdir pyglcomo<br>    ~$ cd pyglcomo<br><br>3. creiamo l'ambiente python virtuale. Il comando 'virtualenv' richiede <br>il nome della cartella in cui verrà creato l'ambiente. Qui diamo <br>'franco', come esempio.<br><br>    pyglcomo$ virtualenv franco<br>    Using base prefix '/usr'<br>    New python executable in /home/fabio/pyglcomo/franco/bin/python3<br>    Also creating executable in /home/fabio/pyglcomo/franco/bin/python<br>    Installing setuptools, pip, wheel...done.<br><br>Ed ecco che virtualenv ha creato la cartella 'franco' e ci ha messo <br>dentro tutto quello che serve a python per funzionare, compreso <br>l'eseguibile python.<br><br>4. attiviamo il virtualenv<br><br>   pyglcomo$ source franco/bin/activate<br>   (franco) pyglcomo$<br><br>Abbiamo attivato il virtualenv, il prompt di bash è stato modificato e <br>visualizza il nome del virtualenv attivo (franco).<br>Lo script "activate" aggiunge la cartella "franco/bin" al PATH e <br>imposta alcune variabili d'ambiente per far si che l'interprete python <br>lanciato da quel prompt cerchi le librerie all'interno della cartella <br>"franco".<br><br>    (franco) pyglcomo$ which python<br>    /home/fabio/pyglcomo/franco/bin/python<br><br>5. installiamo requests e BeautifulSoup<br><br>    (franco) pyglcomo$ pip install requests beautifulsoup4<br><br>a questo punto salvato lo script di esempio in ~/pyglcomo , lo possiamo <br>eseguire.<br>Per uscire dal virtualenv, il comando è "deactivate". Se chiudete il <br>terminale, il virtualenv viene disattivato.<br>Ricordate di riattivarlo quando vi serve...<br><br><br>_0: https://news.ycombinator.com/<br>_1: http://python-requests.org<br>_2: https://www.crummy.com/software/BeautifulSoup/bs4/doc/<br>_3: https://blog.codinghorror.com/parsing-html-the-cthulhu-way/<br><br><br>-- <br>Mailing list info: https://lists.linux.it/listinfo/gl-como<br><br></blockquote><br>