我正在为我的一门课做作业。
我应该编写一个网络爬虫,从给定指定爬网深度的网站下载文件和图像。
我被允许使用第三方解析 api,所以我使用Jsoup。我也试过htmlparser。两个不错的软件,但它们并不完美。
我在处理 url 之前使用了默认的 java URLConnection来检查内容类型,但是随着链接数量的增加,它变得非常慢。
问题:任何人都知道任何专门用于图像和链接的解析器 API 吗?
我可以开始使用 Jsoup 编写我的,但我很懒。此外,如果有可行的解决方案,为什么还要重新发明轮子?任何帮助,将不胜感激。
我需要在循环遍历链接时检查 contentType 以检查链接是否指向文件,以一种有效的方式,但 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);
}**
更新 根据 Yoshi 的回答,我能够让我的代码正常工作。这是链接: