Automazione scaricamento dati da sito web
Inviato: lun 8 feb 2016, 15:10
Devo estrarre dei dati di misurazioni reperibili al seguente indirizzo.
http://www.cartografiarl.regione.liguri ... iMeteo.asp
Dateci un'occhiata...
In pratica seleziono:
1- stazione di misura che mi interessa.
2- "Tipo di dato" scegliendo "Orario" (misurazioni ora per ora).
3- "Parametro" di interesse (può essere precipitazione, temperatura, o portata).
4- tipo di output (sempre "File ascii" con separatore ";")
5- Inizio periodo (data e ora)
6- Fine periodo (data e ora)
A questo punto premendo il bottone "Accedi ai dati", si pare una nuova finestra con scritto: "Scaricare qui il file che contiene i dati estratti"
La parola "qui" è un collegamento all'indirizzo del file da scaricare, che si può dare anche in pasto a wget per capirci.
Et voilà: ecco che in locale mi ritrovo il file che mi interessa.
Siccome devo ripetere l'operazione per diverse stazioni di misura, mi chiedevo se ci fosse la possibilità di buttare giù un semplice script, magari in bash in modo che sia possibile ottenere direttamente il file di interesse senza interagire interattivamente con l'interfaccia web.
Qualcosa da richiamare come segue, chiamiamo l'eventuale script ad esempio getdata.sh:
I restanti "parametri" necessari:
- tipo di output e separatore
- inizio e fine periodo
- tipo di dato orario
li infilerei come variabili direttamente nello script, perchè sono sempre costanti... In pratica mi interessa sempre lo stesso periodo, sempre misurazioni orarie e voglio ottenere sempre lo stesso tipo di output formattato allo stesso modo.
Per automatizzare la procedura, si deve capire come funziona l'interfaccia web.
In pratica è una pagina ".asp" con dei javascript o qualcosa del genere.
Quando si selezionano manualmente i vari parametri, vengono memorizzati in pratica delle variabili che vengono passate poi a questo javascript, o qualcosa del genere e infine quando si preme "accedi ai dati" ecco che lui "crea" il link richiesto e lo mette a disposizione.
L'idea sarebbe quella di crearmi un file di testo di due colonne inputfile.txt:
E poi richiamare lo script bash:
In questo modo posso con calma scegliere le stazioni di interesse in base a criteri che non sto qui a spiegarvi.
Crearmi a mano l'inputfile.txt e quindi richiamare lo script bash come mostrato sopra ottenendo in un colpo solo tutti i dati che mi servono in locale.
L'utilità è appunto il risparmio di tempo che butterei nella fase di selezione dati se usassi l'interfaccia web interattiva.
Questa è l'idea.
Siccome conosco questo forum da parecchio ormai, so che qui c'è gente pratica di sviluppo web, cui probabilmente basta un'occhiata alla pagina del link iniziale per capire come funziona e come si potrebbe utilizzare non interattivamente.
Non è che qualcuno potrebbe darmi qualche dritta su come potrei usare tipo curl o wget o altro per raggiungere lo scopo?
Se volete provare, fatemi sapere così vi indico un'"interrogazione" tipo d'esempio, in modo che possiate provare manualmente in prima persona a scaricare qualche dato e sicuramente capirete facilmente come funziona.
Purtroppo personalmente non sono pratico di web scripts e simili... ma alla fine guardando i sorgenti delle pagine mi sembra ad occhio abbastanza fattibile, solo che mi manca qualche "base" per mettere in pratica il tentativo.
Grazie in anticipo!
http://www.cartografiarl.regione.liguri ... iMeteo.asp
Dateci un'occhiata...
In pratica seleziono:
1- stazione di misura che mi interessa.
2- "Tipo di dato" scegliendo "Orario" (misurazioni ora per ora).
3- "Parametro" di interesse (può essere precipitazione, temperatura, o portata).
4- tipo di output (sempre "File ascii" con separatore ";")
5- Inizio periodo (data e ora)
6- Fine periodo (data e ora)
A questo punto premendo il bottone "Accedi ai dati", si pare una nuova finestra con scritto: "Scaricare qui il file che contiene i dati estratti"
La parola "qui" è un collegamento all'indirizzo del file da scaricare, che si può dare anche in pasto a wget per capirci.
Et voilà: ecco che in locale mi ritrovo il file che mi interessa.
Siccome devo ripetere l'operazione per diverse stazioni di misura, mi chiedevo se ci fosse la possibilità di buttare giù un semplice script, magari in bash in modo che sia possibile ottenere direttamente il file di interesse senza interagire interattivamente con l'interfaccia web.
Qualcosa da richiamare come segue, chiamiamo l'eventuale script ad esempio getdata.sh:
Codice: Seleziona tutto
getdata.sh <nome-stazione> <parametro-di-interesse>
- tipo di output e separatore
- inizio e fine periodo
- tipo di dato orario
li infilerei come variabili direttamente nello script, perchè sono sempre costanti... In pratica mi interessa sempre lo stesso periodo, sempre misurazioni orarie e voglio ottenere sempre lo stesso tipo di output formattato allo stesso modo.
Per automatizzare la procedura, si deve capire come funziona l'interfaccia web.
In pratica è una pagina ".asp" con dei javascript o qualcosa del genere.
Quando si selezionano manualmente i vari parametri, vengono memorizzati in pratica delle variabili che vengono passate poi a questo javascript, o qualcosa del genere e infine quando si preme "accedi ai dati" ecco che lui "crea" il link richiesto e lo mette a disposizione.
L'idea sarebbe quella di crearmi un file di testo di due colonne inputfile.txt:
Codice: Seleziona tutto
"nome_stazione" "misurazione_di_interesse"
Codice: Seleziona tutto
while read stazione misurazione
do
getdata.sh "$stazione" "$misurazione"
done < inputfile.txt
Crearmi a mano l'inputfile.txt e quindi richiamare lo script bash come mostrato sopra ottenendo in un colpo solo tutti i dati che mi servono in locale.
L'utilità è appunto il risparmio di tempo che butterei nella fase di selezione dati se usassi l'interfaccia web interattiva.
Questa è l'idea.
Siccome conosco questo forum da parecchio ormai, so che qui c'è gente pratica di sviluppo web, cui probabilmente basta un'occhiata alla pagina del link iniziale per capire come funziona e come si potrebbe utilizzare non interattivamente.
Non è che qualcuno potrebbe darmi qualche dritta su come potrei usare tipo curl o wget o altro per raggiungere lo scopo?
Se volete provare, fatemi sapere così vi indico un'"interrogazione" tipo d'esempio, in modo che possiate provare manualmente in prima persona a scaricare qualche dato e sicuramente capirete facilmente come funziona.
Purtroppo personalmente non sono pratico di web scripts e simili... ma alla fine guardando i sorgenti delle pagine mi sembra ad occhio abbastanza fattibile, solo che mi manca qualche "base" per mettere in pratica il tentativo.
Grazie in anticipo!