Update 'README.md'
This commit is contained in:
parent
47f68fab98
commit
f550439684
113
README.md
113
README.md
|
@ -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)
|
|
Loading…
Reference in New Issue
Block a user