Tak jak przedmowcy napisali. Opcje sa generalnie dwie: albo parsujesz jakas strone albo (zdecydowanie lepiej) skorzystasz z jakiegos API. Jezeli chcesz parsowac strone to dobra biblioteka jest jSoup. Przykladowy kod wyciagajacy srednia cene gazu:
public double getAverageLpgCost() throws IOException {
Document document = Jsoup.connect("http://nafta.wnp.pl/ceny_paliw/").get();
Element table = document.select("table").first();
Elements tableRows = table.select("tr");
boolean tableHeader = true;
double priceSum = 0;
for (Element tableRow: tableRows) {
if (tableHeader) {
tableHeader = false;
continue;
}
Elements tableCols = tableRow.select("td");
priceSum += Double.parseDouble(tableCols.get(4).html().replaceAll(" .*", "")); // Cena LPG, czyli 5 kolumna
}
return priceSum / (double)(tableRows.size() - 1);
}
Kod pisalem troche na szybko - nie wiem nawet czy dobrze liczy srednia bo nie sprawdzalem.
Przy podejsciu opartym na parsowaniu HTML-a dobrze byloby pobierac dane z wielu zrodel - wtedy jezeli jakas strona zmieni swoja strukture (ewentualnie przestanie dzialac) to program wyciagnie dane z innych serwisow.
Pobieranie danych z wielu serwisow mogloby takze w pewnym sensie rozwiazac problem niepoprawnych obliczen na skutek zmiany struktury strony - chodzi o sytuacje typu "ktos wstawil jedna kolumne i cena gazu nie jest juz w 5 kolumnie tylko w 6". Majac odpowiednia ilosc srednich cen paliw moglbys odrzucic wartosci skrajne. Problem tylko w tym, ze dane z roznych serwisow musialbys gdzies gromadzic tak aby nie były pobierane po każdym uruchomieniu aplikacji (długi czas oczekiwania).