私は自分のクラスの1つに割り当てを行っています。
指定されたクロール深度を指定して、Webサイトからファイルと画像をダウンロードするWebクローラーを作成することになっています。
サードパーティの解析APIの使用が許可されているため、Jsoupを使用しています。htmlparserも試しました。どちらも素晴らしいソフトウェアですが、完璧ではありません。
デフォルトのJavaURLConnectionを使用して、URLを処理する前にコンテンツタイプを確認しましたが、リンクの数が増えると非常に遅くなります。
質問:画像とリンクに特化したパーサー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);
}**
更新 ヨッシーの答えに基づいて、私は自分のコードを正しく動作させることができました。リンクは次のとおりです。