web-dev-qa-db-ja.com

Javaを使用したWebスクレイピング

適切なWebスクレイピングを見つけることができませんJavaベースのAPI。スクレイピングする必要があるサイトはAPIも提供していません。すべてのWebページをpageID DOMツリーでHTMLタイトルやその他のものを抽出します。

Webスクレイピング以外の方法はありますか?

70
NoneType

スープ

タイトルの抽出は難しくなく、多くのオプションがあります。スタックオーバーフローで「Java HTMLパーサー」を検索してください。それらの1つは Jsoup です。

ページ構造がわかっている場合は、DOMを使用してページをナビゲートできます。 http://jsoup.org/cookbook/extracting-data/dom-navigation を参照してください。

それは良いライブラリであり、私は私の最後のプロジェクトでそれを使用しました。

91
Wajdy Essam

あなたの最善の策は、Selenium Web Driverを使用することです

  1. コーダーに視覚的なフィードバックを提供します(実際のスクレイピングを参照し、停止する場所を確認します)
  2. 使用するブラウザを直接制御するため、正確で一貫性があります。
  3. スロー。 HtmlUnitのようにWebページにはヒットしませんが、あまり速くヒットしたくない場合があります。

    Htmlunitは高速ですが、JavascriptとAJAXの処理が恐ろしいです。

20
KJW

HTMLUnitはWebスクレイピングに使用でき、ページの呼び出し、フォームへの入力および送信をサポートします。これをプロジェクトで使用しました。 Javaライブラリ。 詳細はこちらを参照してください

13
Beschi

JauntもありますJava Web Scraping&JSON Querying- http://jaunt-api.com

4
Slavus

mechanize for Javaはこれに適しています。WadjyEssamがHMLTにJSoupを使用しているように。mechanizeは、ナビゲーション、フォーム送信、ページスクレイピングをサポートする段階的なHTTP/HTMLクライアントです。 。

http://gistlabs.com/software/mechanize-for-Java/ (およびGitHubはこちら https://github.com/GistLabs/mechanize

4
user1374041

TagSoup、HTMLCleaner、NekoHTMLなどのHTMLパーサーを見てください。

2
Mikos

jwht-scrapper

これは、開発者がWebスクラッパーに期待できるすべての機能を備えた完全なスクラップフレームワークです。

これは、(jwht-htmltopojo)[ https://github.com/whimtrip/jwht-htmltopojo )libで動作します。

それらを一緒に使用すると、HTMLを直接POJOにマッピングし、古典的なスクラッピングの問題を数分で回避する素晴らしいスクラッパーを構築できます。

これが何人かの人々の助けになることを願っています!

免責事項、私はそれを開発した人です、あなたの意見を私に知らせてください!

2
Louis-Wht

大量のページまたはデータのスクレイピングを自動化する場合は、 Gotz ETL を試してください。

これは、実際のETLツールのように完全にモデル駆動型です。データ構造、タスクワークフロー、およびスクレイピングするページは、XML定義ファイルのセットで定義され、コーディングは不要です。クエリは、JSoupでセレクターを使用するか、HtmlUnitでXPathを使用して作成できます。

1
Maithilish

Webスクレイパーを使用すると、Webページから有用なコンテンツを抽出し、必要に応じて任意の形式に変換できます。

WebScrap ws= new WebScrap();
//set your extracted website url
ws.setUrl("http://dasnicdev.github.io/webscrap4j/");
//start scrap session
ws.startWebScrap();

これで、Web破棄セッションが開始され、Java usingwebscrap4j library

タイトルの場合:

System.out.println("-------------------Title-----------------------------");
System.out.println(ws.getSingleHTMLTagData("title"));

キャッチフレーズの場合:

System.out.println("-------------------Tagline-----------------------------");
System.out.println(ws.getSingleHTMLScriptData("<h2 id='project_tagline'>", "</h2>"));

すべてのアンカータグの場合:

System.out.println("-------------------All anchor tag-----------------------------");
   al=ws.getImageTagData("a", "href");
   for(String adata: al)
   {
    System.out.println(adata);
   }

画像データの場合:

System.out.println("-------------------Image data-----------------------------");
   System.out.println(ws.getImageTagData("img", "src"));
   System.out.println(ws.getImageTagData("img", "alt"));

Ul-Liデータの場合:

System.out.println("-------------------Ul-Li Data-----------------------------");
   al=ws.getSingleHTMLScriptData("<ul>", "</ul>","<li>","</li>");
   for(String str:al)
   {
    System.out.println(str);
   }

完全なソースコードについては、これを確認してくださいtutorial

1
Tell Me How