PDA

View Full Version : programma


DanielDj
05-05-2007, 16:20
:help:

Ciao,
sono un principiante nel settore della programmazione e devo realizzare un programma che interagisce con un sito web salvando dati in automatico.
Non so da che parte iniziare, ne quale linguaggio usare.

premetto che mi serve un programma per fare un lavoro di tesi in fisica che fatto manualmente richederebbe molto tempo e sarebbe inutile in quanto ripetitivo.

Grazie in anticipo per le risposte

andbin
05-05-2007, 16:32
devo realizzare un programma che interagisce con un sito web salvando dati in automatico.Specifica meglio come/cosa dovrebbe fare il programma.

Non so da che parte iniziare, ne quale linguaggio usare.Ma conosci dei linguaggi di programmazione oppure no?
Molti linguaggi di programmazione, chi pių chi meno, hanno il supporto per fare programmazione di rete. Tra questi spiccano Java e i linguaggi come C# e VB.Net che usano il .NET framework. Ma ci sono anche molti altri linguaggi di scripting che permettono di interagire con la rete, magari tramite librerie specifiche.

Quindi ha un interesse per un determinato linguaggio o per te č indifferente?

DanielDj
06-05-2007, 13:22
Ciao, per prima cosa grazie per l'interessamento.
Ho qualche conoscenza di base di java, c/c++, se necessario mi adatto anche ad altri linguaggi.

Si tratta di lavorare con hysplit, un programma americano presente on line in un sito web (http://www.arl.noaa.gov/ready/open/traj.html) che permette di trovare le traiettorie del particolato atmosferico. Il mio lavoro consiste nel registrare queste traiettorie di giorno in giorno per tutto l'arco di un anno e poi salvarle.Si tratta aggiornare la data, di volta in volta, dopo che il prgramma ha calcolato la traiettoria.

Spero sia chiaro.
attendo risposte.
Ciao

DanielDj
07-05-2007, 14:54
vi prego di aiutarmi.... č importante!

PGI-Bis
07-05-2007, 15:37
Penso che tu debba analizzare la struttura dei form e la sequenza di query HTTP (puah!) che occorre produrre per giungere alla sequenza di dati che ti interessano.

Insomma, hai da guarda' li sorgenti... :D.

Premesso che non ho la minima idea di cosa facciano quelle pagine web e che questo non aiuto molto a fare la cosa giusta, posso farti un esempio di "query programmatica" sugli indirizzi usati da quell'affare. Una cosa semplicissima.

Esaminando le pagine html prodotte dallo smanacciamento sui tasti di quel "programma", mi risulta che per ottenere un elenco degli "archived meteorological dataset" basti dire:

private final String SERVICE_ADDRESS = "http://www.arl.noaa.gov/";

private Collection<String> getDatasetQueries() throws IOException {
URL url = new URL(SERVICE_ADDRESS + "ready/open/traj.html");
Scanner in = new Scanner(url.openStream());
StringBuilder data = new StringBuilder();
while(in.hasNextLine()) {
data.append(in.nextLine());
}
LinkedList<String> options = new LinkedList<String>();
int offset = data.indexOf("OPTION");
while(offset > 0) {
String option = data.substring(offset, data.indexOf(">", offset));
int valueOffset = option.indexOf("value=\"", 0) + "value=\"".length();
int valueEnd = option.indexOf("\"", valueOffset);
options.add(option.substring(valueOffset, valueEnd));
offset = data.indexOf("OPTION", offset + 1);
}
in.close();
return options;
}

Per ottenere l'elenco degli "archive file" appartenenti ad uno degli "archived meteorological dataset" basta prendere una delle stringhe presenti nella collezione su ottenuta e dire:

private Collection<String> getFiles(String datasetQuery) throws IOException {
URL url = new URL(SERVICE_ADDRESS + datasetQuery);
Scanner in = new Scanner(url.openStream());
StringBuilder data = new StringBuilder();
while(in.hasNextLine()) {
data.append(in.nextLine());
}
LinkedList<String> files = new LinkedList<String>();
int offset = data.indexOf("<OPTION>");
int nextOffset = data.indexOf("<OPTION>", offset + 1);
while(offset > 0 && nextOffset > 0) {
String option = data.substring(offset + "<OPTION>".length(), nextOffset);
files.add(option);
offset = nextOffset;
nextOffset = data.indexOf("<OPTION>", offset + 1);
}
in.close();
return files;
}

E si va avanti cosė. Probabilmente la pagina successiva usa il nome di uno di quei file per comporre una terza query, poi una quarta e cosė via. Sapendo esattamente cosa cercare non dovrebbe essere difficile andare avanti.