我正在为我的一个课程做作业。专门用于下载图像和文件的网页爬虫
我应该写一个webcrawler,从给定指定爬网深度的网站下载文件和图像。
我被允许使用第三方解析API,所以我使用Jsoup。我也试过htmlparser。这两个不错的软件,但他们并不完美。
我使用默认java URLConnection在处理url之前检查内容类型,但随着链接数量增长,它变得非常慢。
问题:任何人都知道图像和链接的任何专业解析器API?
我可以开始使用Jsoup写我的,但我很懒。除了为什么要重新发明轮子,如果有可行的解决方案呢?任何帮助,将不胜感激。
我需要检查contentType while循环链接来检查链接是否是一个文件,在一个有效的方式,但Jsoup没有我所需要的。继承人我有什么: **
HttpConnection mimeConn =null;
Response mimeResponse = null;
for(Element link: links){
String linkurl =link.absUrl("href");
if(!linkurl.contains("#")){
if(DownloadRepository.curlExists(link.absUrl("href"))){
continue;
}
mimeConn = (HttpConnection) Jsoup.connect(linkurl);
mimeConn.ignoreContentType(true);
mimeConn.ignoreHttpErrors(true);
mimeResponse =(Response) mimeConn.execute();
WebUrl webUrl = new WebUrl(linkurl,currentDepth+1);
String contentType = mimeResponse.contentType();
if(contentType.contains("html")){
page.addToCrawledPages(new WebPage(webUrl));
}else if(contentType.contains("image")){
page.addToImages(new WebImage(webUrl));
}else{
page.addToFiles(new WebFile(webUrl));
}
DownloadRepository.addCrawledURL(linkurl);
}**
UPDATE 基于Yoshi的答案,我能得到我的代码工作的权利。这里的链接:
如果您的懒惰检查'wget'可以做同样的工作 – Viren 2013-02-15 12:30:32
Java开发对于研究来说很重要,它为给定问题域找到最好的API并使用它来解决您的问题。当然,懒惰,不要重蹈覆辙,但不要懒惰,不要做自己的研究。 – sbk 2013-02-15 12:39:54