Cześć,
mam za zadanie napisanie aplikacji, odczytującej kilka wartości dotyczących pogody z wybranej przeze mnie strony. Wybrałem stronę www.twojapogoda.pl z kilku względów i wziąłem się za odczyt danych na czym utknąłem. Chciałbym na początku odczytać wartość ciśnienia (bo wydało mi się to najprostsze)
Oto kod HTML do odczytania:
<div class="value">1016 hPa</div>
A oto mój kod programu:
package lab06_pop;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WyrazeniaRegularne
{
public static void main(String[] args) throws MalformedURLException, IOException
{
URL url = new URL("http://www.twojapogoda.pl/polska/dolnoslaskie/polkowice");
BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
StringBuilder buff = new StringBuilder();
String line;
while((line = in.readLine())!=null)
{
buff.append(line);
buff.append("\n");
}
String str = buff.toString();
in.close();
Pattern pattCisnienie = Pattern.compile("<td class=\"value\">([0-9]{1,3}) \"hPa\"</div>");
Matcher matchCisnienie = pattCisnienie.matcher(str);
while(matchCisnienie.find())
{
System.out.println(matchCisnienie);
}
}
}
- Oczywiście kod nie działa poprawnie, nie odczytuje wartości, co robię źle?
- Czy odczytywanie za pomocą wyrażeń regularnych to dobra metoda? Nie mogę używać gotowych parserów HTML, ale myślałem także, nad Scanner'em.
Muszę odczytać następujące linijki:
<strong>2</strong><sup>°C</sup><br/>
<div class="value">1016 hPa</div>
<div class="value">0 mm / 12 h</div>
Z góry dziękuję za odpowiedź i pozdrawiam :)