所以,我有一个huuuge HTML文件,它有很多这样的HREF和链接名称
<A HREF="AccountCttR.html" TARGET="tableFrame">AccountCttRR</A><BR>
<A HREF="AccountCV.html" TARGET="tableFrame">AccCV</A><BR>
<A HREF="AccountCR.html#AccountHolder" TARGET="tableFrame">AccH</A><BR>
现在,我想解析这个HTML文件,并使用
创建一个哈希映射Key = <*.html>; value = <linkname>
前提条件:HREF都是唯一的。因此,它们可以很容易地用作hashmap的键。 我知道我可以使用JSoup,但我怎么做到这一点(在java中)?请帮帮忙?
使用的代码: 我正在尝试使用此代码:
// rawContent is the "string" output of bufferedreader
Element content = Jsoup.parse(rawContent).getElementById("content");
Elements links = content.getElementsByTag("a");
for (Element link : links) {
String linkHref = link.attr("href");
String linkText = link.text();
System.out.println(linkHref+" @@@ "+ linkText);
}
但它返回一个Java NullPointerException
。
答案 0 :(得分:3)
Jsoup是一个用于处理真实HTML的Java库。它 提供了一个非常方便的API来提取和操作数据, 使用最好的DOM,CSS和类似jquery的方法
以下是您可能尝试在HashMap中存储链接和详细信息的代码:
Document doc;
Map<String,String> hrefMap = new HashMap<String,String>();
try {
// need http protocol
doc = Jsoup.connect("http://google.com").get();
// get all links
Elements links = doc.select("a[href]");
for (Element link : links) {
//put elements in the map
hrefMap.put(link.attr("href"),link.text() );
}
} catch (IOException e) {
e.printStackTrace();
}