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
|
||||
~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
|
||||
##cosa c'e' sull'internet
|
||||
|
||||
- informazioni
|
||||
- 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.
|
||||
|
||||
####Prerequisiti
|
||||
|
||||
- python con i seguenti moduli installati
|
||||
- requests
|
||||
- beautiful soup (bs4)
|
||||
|
||||
Il sito da cui andremo ad estrarre le informazioni e' il seguente:
|
||||
|
||||
```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
|
||||
|
||||
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
|
||||
|
||||
|
||||
# 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.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