我正在创建一个抓取.edu域的网络抓取工具。我正在使用jsoup来解析我的html文件以获取锚链接。然后我将链接添加到HashSet,因为我不想有重复的URL。但是,当我打印出我的HashSet时,我有几个url的重复。
我将我的集合声明为成员函数
private Set <String> url = new HashSet<String>();
public void jsoupParse(String htmlFile, String baseUrl){
try{
File input = new File(htmlFile);
Document doc = Jsoup.parse(input, "UTF-8", baseUrl);
Elements links = doc.select("a[href]");
for (Element link : links) {
String linkHref = link.attr("abs:href");
linkHref.trim();
url.add(linkHref);
}
printCollection();
}
catch(IOException e){
e.printStackTrace();
}
}
在我的种子文件中,我有4个网址,所以我有4个html文件。当我打印出来时,我得到了659个条目。下面是我的输出样本。例如,此特定URL将打印出四次。 http://diversity.mit.edu/diversity-summit-2015/
我的输出:
http://web.mit.edu/admissions/
http://diversity.mit.edu/
http://newsoffice.mit.edu
http://whereis.mit.edu
http://diversity.mit.edu/diversity-summit-2015/
http://diversity.mit.edu/event/mlk-celebration-2015/
http://mit.edu/site/?ref=mithomepage
http://ki.mit.edu
http://web.mit.edu/athletics/www/
http://twitter.com/mit
http://libraries.mit.edu/
http://web.mit.edu/faculty/
....
http://newsoffice.mit.edu
http://strategiccommunications.ucr.edu/
http://hvrd.me/GmV2x
http://diversity.mit.edu/diversity-summit-2015/
http://ucr.edu/
http://hvrd.me/IaiDY
http://ki.mit.edu
http://stanford.edu/academics/programs
http://news.stanford.edu/news/2015/january/jones-students-econversation-012815.html
http://harvard.edu/#skip
http://campusmap.ucr.edu/?loc=HINHL
答案 0 :(得分:3)
对于像Java这样广泛使用的完善语言,更好地怀疑你的程序问题。
您可以通过打印出您的网址字符串的hashCode()
和toByteArray()
来解决此问题,这可以告诉您原因不同的原因。
我猜是
trim()
删除)