【问题标题】:Parse anchor tags in java string解析java字符串中的锚标签
【发布时间】:2014-04-16 00:28:14
【问题描述】:

我正在创建一个网络爬虫,我只是读取页面的 html 并存储到一个字符串中。然后我在 html 中找到了所有的锚标记,并将它们存储到一个名为 anchorTags 的 ArrayList 中。我现在需要处理数组列表中每个字符串的“a href=" 部分。为此,我编写了以下代码;但是,由于某种原因,我得到了一个出界异常。请注意,我只需要使用循环、数组列表来执行此操作:

ArrayList<String> parsedLinks = new ArrayList<String>();
    String storeHTML = "";

    for(int i = 0; i < anchorTags.size(); i++) {
        String anchorTag = anchorTags.get(i);
        int hrefIndex = anchorTag.indexOf("a href=");

        if (hrefIndex > -1) {



            int beginQuote = anchorTag.indexOf("\"", hrefIndex);

            int EndQuote = anchorTag.indexOf("\"", beginQuote +1);

            if (EndQuote > beginQuote) {
                storeHTML.substring(beginQuote +1, EndQuote);

            }


        }
    }
    parsedLinks.add(storeHTML);
    System.out.println(parsedLinks);
    return parsedLinks;


}

【问题讨论】:

  • "我遇到了一个越​​界异常" 这个异常会告诉你到底出了什么问题。假设您已经看过它并且仍然很难过,您不认为发布例外以帮助他人帮助您很重要吗?
  • 异常是:线程“main”中的异常 java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:WebCrawler.WebCrawler.linkParser( WebCrawler.java:127) 在 WebCrawler.WebCrawler.main(WebCrawler.java:28)
  • 好的开始:你的代码中的那些行号在哪里?
  • 127 是我创建子字符串的地方。 28 是我在 main 方法中引用返回值的地方

标签: java html parsing arraylist


【解决方案1】:

不应该

storeHTML.substring(beginQuote +1, EndQuote);

storeHTML = anchorTag.substring(beginQuote +1, EndQuote);?

【讨论】:

  • 是的!我明白我在那里做错了什么。谢谢!这会打印出我的原始字符串,但结果会保留锚标记并且不会删除任何内容
  • 您需要展示一些示例输入、预期输出和实际输出。
  • 我没有将它添加到循环中的数组中!感谢您的帮助!
最近更新 更多