pobieranie danych z strony html do javy

0

napisałem takie coś:

    public static String getRank(String address) throws IOException {
        URL url = new URL(address);
        BufferedReader reader = null;
        try {
            reader = new BufferedReader(new InputStreamReader(url.openStream()));

            String line = null;
            while ((line = reader.readLine()) != null) {
                int start = line.indexOf("<title>");
                int end = line.indexOf("</title>");

                if (start != -1) {
                    return line.substring(start + "<title>".length(), end);
                }
            }

            return "";
        } finally {
            if (reader != null) {
                reader.close();
            }
        }
    }

i dla title działa ale jak robie zamiast <title> <body> to wywala błąd tutaj:
return line.substring(start + "<title>".length(), end);
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -11
at java.lang.String.substring(String.java:1955)
at com.gmail.dekros1123.bot.Main.getRank(Main.java:61)
at com.gmail.dekros1123.bot.Main.main(Main.java:74)
jak to naprawic?

0

Po mojemu to brakuje zamykającego </body> w linii.

Czytasz linia po linii i w tej samej linijce szukasz otwarcia i zamknięcia tagu. Mniej więcej oznacza to tyle, że program będzie się wykrzaczać za każdym razem, gdy tagi są w oddzielnych liniach, tzn:

Zadziała:

	<title>AAA</title>

Rzuci błędem:

	<title>
		AAA</title>

Użyj jakiejś biblioteki zewnętrznej, np: http://jsoup.org/cookbook/extracting-data/dom-navigation

1 użytkowników online, w tym zalogowanych: 0, gości: 1