JavaベースのAPIをスクレイピングする優れたWebを見つけることができません。私がスクレイプする必要があるサイトは、APIも提供していません。いくつかを使用してすべてのWebページを反復処理しpageID
、DOMツリーでHTMLタイトル/その他のものを抽出したいと思います。
ウェブスクレイピング以外の方法はありますか?
JavaベースのAPIをスクレイピングする優れたWebを見つけることができません。私がスクレイプする必要があるサイトは、APIも提供していません。いくつかを使用してすべてのWebページを反復処理しpageID
、DOMツリーでHTMLタイトル/その他のものを抽出したいと思います。
ウェブスクレイピング以外の方法はありますか?
タイトルの抽出は難しくなく、多くのオプションがあります。スタック オーバーフローで「Java HTML parser」を検索してください。それらの 1 つがJsoupです。
ページ構造がわかっている場合は、DOM を使用してページをナビゲートできます 。http://jsoup.org/cookbook/extracting-data/dom-navigationを参照してください。
これは優れたライブラリであり、以前のプロジェクトで使用しました。
最善の策は、SeleniumWebDriverを使用することです。
コーダーに視覚的なフィードバックを提供します(スクレイピングの動作を確認し、停止する場所を確認してください)
使用するブラウザを直接制御するため、正確で一貫性があります。
遅い。HtmlUnitのようにWebページにヒットしませんが、あまり速くヒットしたくない場合があります。
Htmlunitは高速ですが、JavascriptとAJAXの処理にはひどいものです。
HTMLUnitは Web スクレイピングに使用でき、ページの呼び出し、フォームの入力と送信をサポートします。私は自分のプロジェクトでこれを使用しました。Webスクレイピングに適したJavaライブラリです。 詳しくはこちらをお読みください
Java の mechanize はこれに適しています。Wadjy Essam が述べたように、HMLT には JSoup を使用します。mechanize は、ナビゲーション、フォームの送信、およびページのスクレイピングをサポートする段階的な HTTP/HTML クライアントです。
http://gistlabs.com/software/mechanize-for-Java/ (および GitHub はこちらhttps://github.com/GistLabs/mechanize )
TagSoup、HTMLCleaner、NekoHTML などの HTML パーサーを見てください。
大量のページまたはデータのスクレイピングを自動化したい場合は、Gotz ETLを試すことができます。
これは、実際の ETL ツールのように完全にモデル駆動型です。スクレイピングするデータ構造、タスク ワークフロー、およびページは、一連の XML 定義ファイルで定義され、コーディングは不要です。クエリは、JSoup でセレクターを使用するか、HtmlUnit で XPath を使用して記述できます。