104 lines
3.7 KiB
Markdown
104 lines
3.7 KiB
Markdown
# Anche i robot navigano il web
|
|
~web scraping, estrarre informazioni da Internet~
|
|
|
|
## intro
|
|
- cosa c'e' sull'internet
|
|
- informazioni
|
|
- risorse
|
|
- servizi
|
|
- web vs web browser
|
|
- analisi di una richiesta HTTP
|
|
- dimostrazione con cUrl
|
|
- estrazione
|
|
- superficie: panoramica possibili utilizzi
|
|
- tecniche
|
|
- ostacoli e limitazioni
|
|
- tecnico-pratiche
|
|
- legali*
|
|
- inserimento
|
|
- superficie: panoramica possibili utilizzi
|
|
- tecniche e ostacoli come da estrazione
|
|
- motivazioni
|
|
- pratiche
|
|
- reperibilita' offline
|
|
- far sopravvivere la fruizione ai provider attuali dei contenuti
|
|
- costruzione di soluzioni utente-centriche
|
|
- politiche
|
|
- liberare le informazioni
|
|
- artistiche
|
|
- manipolare le informazioni per caricarle di altro significato
|
|
|
|
(*) need halp
|
|
|
|
|
|
## pratica 1: cUrl
|
|
|
|
## (?)pratica 1.5: greasemonkey
|
|
|
|
## pratica 2: scrapy
|
|
|
|
## pratica 3: PhantomJs/CasperJs
|
|
|
|
## (???)pratica 4: selenium/watir
|
|
|
|
|
|
**tbd: obiettivi scraping per workshop**
|
|
|
|
___
|
|
|
|
#cosa c'e' sull'internet
|
|
|
|
- informazioni
|
|
- servizi
|
|
- persone che ne fruiscono
|
|
|
|
### Informazioni
|
|
Le informazioni descrivono la realta' in cui viviamo e sono la base su cui prendiamo delle decisioni. Sono facili da quantificare. Sono facili da manipolare.
|
|
|
|
#### Tipi di informazione che si trova sull' internet
|
|
|
|
(in ordine dalla piu' alla meno rara)
|
|
- edita o elaborata (libri, film, tracce musicali, articoli di un blog) - alto valore intrinseco.
|
|
- non elaborata (informazioni metereologiche, post su facebook, ) - basso valore intrinseco.
|
|
- metainformazione - (log di un server web/DNS) - valore intrinseco nullo
|
|
|
|
#### Manipolazione
|
|
|
|
La manipolazione dell'informazione la carica di valore, la spiega, la rende fruibile. Invormazioni di tipo diverso necessitano tipi di manipolazione diversi per acquistare valore intrinseco.
|
|
|
|
Ad esempio un log di Apache (server web):
|
|
|
|
```64.242.88.10 - - [07/Mar/2004:16:05:49 -0800] "GET /twiki/bin/edit/Main/Double_bounce_sender?topicparent=Main.ConfigurationVariables HTTP/1.1" 401 12846```
|
|
|
|
per assumere significato deve essere contestualizzato con altre informazioni su:
|
|
- utente a cui corrisponde l'indirizzo IP
|
|
- contenuti a cui corrisponde il percorso
|
|
- altri log a cui associarlo per riprodurre la history di navigazione dell'utente
|
|
|
|
### Manipolare l'informazione
|
|
*parabola:
|
|
Giangiorgino si sveglia tutte le mattine per andare a prendere lo stesso treno che -di tanto in tanto- non arriva alla stazione per l'orario previsto.
|
|
Quando questo succede Giangiorgino deve correre per prendere un autobus e due tram se vuole sperare di arrivare a destinazione entro la stessa ora -cosa che solitamente non riesce a fare-.
|
|
Giangiorgino, pensandoci su, capisce di avere le seguenti opzioni:
|
|
- svegliarsi mezz'ora prima ogni giorno
|
|
- scaricare l'ultima App Trenissimissimo che gli invia ogni ora di ogni giorno notifiche in tempo reale sullo stato dei 36 treni circolanti sulla tratta
|
|
- **manipolare l'informazione***
|
|
|
|
Manipolare l'informazione significa modificarla, filtrarla e combinarla con altra informazione al fine di darle nuovo significato.
|
|
|
|
*Giangiorgino vuole solo sapere se il *suo* treno arriverà in ritardo, e lo vuole sapere prima di fissare la sveglia*
|
|
|
|
Ecco quindi che il processo ripetitivo di:
|
|
|
|
- a una data ora visitare il sito trenissimissimo.com
|
|
- verificare lo stato di percorrenza del treno
|
|
- scegliere il percorso ottimale
|
|
- fissare la sveglia di conseguenza
|
|
|
|
Può essere facilmente delegato a un robot, un processo che una volta avviato è in grado di proseguire la sua esecuzione senza l'intervento di un umano.
|
|
|
|
Nell'internet, esistono diversi tipi di (ro)bot che navigano la rete in cerca d'informazione, tra cui:
|
|
- motori di ricerca
|
|
- aggregatori
|
|
- id scanner (i.e. EC2 bot)
|