Update 'README.md'

This commit is contained in:
notisset 2017-11-10 00:40:16 +01:00
parent 47f68fab98
commit f550439684

113
README.md
View File

@ -1,52 +1,7 @@
# Anche i robot navigano il web # Anche i robot navigano il web
~web scraping, estrarre informazioni da Internet~ ~web scraping, estrarre informazioni da Internet~
## intro ##cosa c'e' sull'internet
- 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 - informazioni
- servizi - servizi
@ -98,27 +53,75 @@ Per fare questo è necessario individuare le risorse accessibili tramite la rete
Di seguito vedremo alcune delle tecniche che possiamo utilizzare per crearne uno. Di seguito vedremo alcune delle tecniche che possiamo utilizzare per crearne uno.
####Prerequisiti
- python con i seguenti moduli installati
- requests
- beautiful soup (bs4)
Il sito da cui andremo ad estrarre le informazioni e' il seguente: Il sito da cui andremo ad estrarre le informazioni e' il seguente:
```http://viaggiatreno.it/vt_pax_internet/mobile``` ```http://viaggiatreno.it/vt_pax_internet/mobile```
Possiamo quindi iniziare a navigarlo tramite un browser (preferibilmente firefox o chromium/chrome) per farci un idea sul suo funzionamento. E' molto utile in questa fase usare gli strumenti inclusi nel browser come
Il network monitor di firefox:
https://developer.mozilla.org/it/docs/Tools/Network_Monitor
Oppure l'equivalente per Chrome:
https://developers.google.com/web/tools/chrome-devtools/network-performance/resource-loading
####Prerequisiti
- python ~2.7 con i seguenti moduli installati *(durante il workshop vi aiuteremo durante l'installazione)*
- ```requests``` che ci permette di gestire le chiamate HTTP[s] e di estrarne il codice HTML
- ```beautifulsoup``` (bs4) che ci permette di operare selezioni all'interno del codice estratto
####Documentazione
http://docs.python-requests.org/en/master/
https://www.crummy.com/software/BeautifulSoup/bs4/doc/
####Esecuzione ####Esecuzione
Il punto di partenza e' quindi creare un nuovo file che chiameremo `scraper.py` con il seguente contenuto: Il punto di partenza e' quindi creare un nuovo file che chiameremo `scraper.py` con il seguente contenuto:
#! /usr/bin/env python # importiamo il modulo requests
import requests import requests
# modifichiamo gli header in modo da simulare una richiesta proveniente da un browser web (in questo caso firefox) per evitare possibili ban
headers = requests.utils.default_headers()
headers.update({"User-Agent": "Mozilla/5.0"})
# effettuiamo la richiesta
r = requests.get('http://viaggiatreno.it/vt_pax_internet/mobile', headers=headers)
# stampiamo il risultato
print(r.text)
salviamo il file ed eseguiamolo:
$ python scraper.py
in modo da vedere il codice html estratto dalla pagina.
Una volta fatto questo torniamo sul sito ed effettuiamo una ricerca per stazione, tenendo aperto il network monitor del browser. Dopodiche', cerceremo di riprodurre la stessa ricerca utilizzando python:
#! /usr/bin/env python
import requests
from bs4 import BeautifulSoup
headers = requests.utils.default_headers() headers = requests.utils.default_headers()
headers.update({"User-Agent": "Mozilla/5.0"}) headers.update({"User-Agent": "Mozilla/5.0"})
r = requests.get('http://viaggiatreno.it/vt_pax_internet/mobile', headers=headers) data = {
'codiceStazione': 'S01700Milano+Centrale',
'lang': 'IT',
}
r = requests.post('http://viaggiatreno.it/vt_pax_internet/mobile/stazione', headers=headers, data=data)
print(r.text.encode('utf-8'))
print(r.text)