Java 方法从返回重复链接的html获取链接

Java 方法从返回重复链接的html获取链接,java,html,methods,hyperlink,Java,Html,Methods,Hyperlink,我正在构建一个网络爬虫,我从起始页获取HTML,然后将其交给另一个方法,该方法从中获取链接。我假设我总是使用同一个页面,所以我只是构建它来处理HTML。问题是这个方法返回了重复的链接,我不知道为什么。我检查了我正在拉入的HTML,它是正确的,所以问题在于这个方法。 代码如下: public static ArrayList<String> linkParser(String htmlContents) { ArrayList<String> links

我正在构建一个网络爬虫,我从起始页获取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;
    }
非常感谢您的帮助

此代码将起作用

公共静态ArrayList链接解析器(字符串HtmlContent){

ArrayList links=新的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;
}
boolean done=false;
而(!完成){
htmlContents=htmlContents.substring(开始);
int startIndex=htmlContents.indexOf(“
    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;
}