Метод Получение ссылок из HTML Возврат Дубликатов Ссылки

0

Я создаю веб-искатель в какой-то момент. Я получаю HTML-код с начальной страницы, а затем передаю его другому методу, который получает от него ссылки. Я предполагаю, что я всегда использую одну и ту же страницу, поэтому я только создаю ее для работы над этим HTML. Проблема в том, что метод возвращает повторяющиеся ссылки, и я не могу понять, почему. Я проверил HTML, который я втягиваю, и это правильно, поэтому проблема заключается в этом методе. Вот код:

public static ArrayList<String> linkParser(String htmlContents) {

        ArrayList<String> links = new ArrayList<String>();
        int start = 0;
        boolean done = false;
        while (start < htmlContents.length() && !done) {

            int startIndex = htmlContents.indexOf("<A HREF", start);
            if (startIndex != -1) {
                startIndex += 9;
                String currentLink = "";
                int i = startIndex;

                while (htmlContents.charAt(i) != '"') {
                    currentLink += htmlContents.charAt(i);
                    start++;
                    i++;
                }

                links.add(currentLink);
            } else {
                done = true;
            }
        }

        return links;
    }

Вот результат, когда я его называю:

[http://www.cs.uwec.edu/~stevende/cs145testpages/page1.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/page1.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/page1.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/page1.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/page1.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/page1.htm, page2.htm, page2.htm, page2.htm, page2.htm, page2.htm, page2.htm, page2.htm, page2.htm, page2.htm, page2.htm, foo://www.cs.uwec.edu/~stevende/foo/default.htm, foo://www.cs.uwec.edu/~stevende/foo/default.htm, http://www.foo.cs.uwec.edu/~stevende/cs145testpages/default.htm, http://www.foo.cs.uwec.edu/~stevende/cs145testpages/default.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/foo.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/foo.htm, http://www.cs.uwec.edu/~stevende/cs145testpages/foo.htm, http://www.goduke.com/, http://www.goduke.com/, http://www.goduke.com/, http://www.goduke.com/, http://www.goduke.com/]

Вот страница, которую я использую. Любая помощь действительно ценится!

Теги:
methods
hyperlink

1 ответ

1
Лучший ответ

Этот код будет работать

public static ArrayList linkParser (String htmlContents) {

ArrayList links = new ArrayList(); int start = 0;

    boolean done = false;
    while (!done) {
        htmlContents = htmlContents.substring(start);
        int startIndex = htmlContents.indexOf("<A HREF");
        if (startIndex != -1) {
            startIndex += 9;
            String currentLink = "";
            while (htmlContents.charAt(startIndex) != '"') {
                currentLink += htmlContents.charAt(startIndex);
                startIndex++;
            }
            start = startIndex;
            links.add(currentLink);
        } else {
            done = true;
        }
    }

    return links;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню