Ho affrontato questo problema in passato.
Per i dati della cronologia dei prezzi, ho utilizzato l'API di yahoo. Quando dico API, voglio dire che stavo facendo una richiesta di ottenere HTTP per un file CSV dei dati della cronologia dei prezzi. Sfortunatamente, questo ti porta solo i dati per una società alla volta, per un periodo di tempo specificato. Quindi ho prima creato un elenco di tutti i simboli ticker e ho ripetuto l'iter, chiamando l'API di yahoo per ognuno. Potrebbe essere possibile trovare un sito Web che elenchi anche i simboli ticker e scaricare periodicamente tale elenco.
Fai questo troppo spesso e troppo velocemente, e il loro sito web potrebbe bloccarti. Ho aggiunto del codice per limitare la frequenza con cui ho effettuato richieste HTTP. Ho anche persistito i miei dati in modo da non doverlo riprovare. Vorrei sempre mantenere la forma grezza/non elaborata dei dati, il tuo codice potrebbe cambiare in modi che rendono difficile l'utilizzo di qualsiasi altra cosa. Avro/Thrift potrebbe essere un'eccezione, dal momento che quelli supportano l'evoluzione dello schema.
Per altri tipi di dati, potresti non disporre di alcuna API che ti dia buoni file CSV. Ho dovuto affrontare quel problema molte volte. Ecco il mio consiglio.
A volte un sito Web chiama un servizio Web restful dietro le quinte, lo si può scoprire usando firebug. A volte richiede anche alcune intestazioni, che puoi anche scoprire usando firebug.
Se sei costretto a lavorare con HTML, ci sono diverse librerie java che possono aiutarti. apache.commons.http è una libreria che puoi usare per fare facilmente richieste http e gestire le loro risposte. Google ha anche un jar http-client, che probabilmente vale la pena di investigare.
L'API JSoup è eccellente per l'analisi dei dati HTML, anche quando è formattata male e non XHTML. Funziona anche con XML. Invece di attraversare o visitare i nodi nella gerarchia jsoup, impara XPath e usalo per selezionare ciò che vuoi. Il sito Web può cambiare periodicamente il formato della sua pagina web, che dovrebbe essere facile da gestire e risolvere se si sta utilizzando JSoup e difficile da gestire altrimenti.
Se si deve lavorare con JSON, utilizzare la libreria di Jackson per analizzarlo.
Se si deve lavorare con CSV, utilizzare la libreria OpenCSV per analizzarlo e gestirlo.
Inoltre, memorizzare sempre i dati nel raw ed evitare di effettuare richieste HTTP non necessarie per non essere bloccati. Sono stato bloccato da Google Finanza un paio di volte, possono farlo. Fortunatamente il blocco scade. Potresti anche voler aggiungere un periodo di attesa casuale tra le richieste.
Grazie. C'è un modo programmatico? – Kunal
Sarebbe piuttosto banale scrivere un parser per estrarre i dati dall'html. – Joel
@Joel: ancora più semplice per un CSV. –