Jsoup - JavaでHTMLコードを抽出して解析する
Jsoup は、書店 de Java 誰がコードを処理する HTML。これは、API 最適な方法を使用してデータを抽出および操作するのに非常に便利です。DOM, CSS et jquery.
jsoup は HTML5 の特性を実装し、最新のブラウザーと同様にツリー (DOM) 内の HTML コードを解析します。JSOUPは、MIT ライセンス。ソースコードは にあります。GitHub.
機能:
- URL、ファイル、または文字列からHTMLコードを解析します.- DOM ツリーと CSS.
- 要素とテキストを操作する HTML.
- ユーザーのサブスクリプションを消去して XSS 攻撃を防止する.
-整頓されたHTMLコードを作成します.
- < / ul>
JSoupは、HTMLのさまざまなバージョンに適応するように設計されており、分析されたtree.
Click to ダウンロード jsoup.
例:
ウィキペディアのページを取得し、それを変換してDOMとして解析し、ニュースセクションから項目のリストを選択します。
ドキュメント doc = Jsoup.connect("http://fr.wikipedia.org").get();
1 - ドキュメントの解析
このコードは分析用です document HTML:
String html = "<ヘッド>最初のタイトル"
+ "<ボディ><ドキュメント化するコード例";
Document doc = Jsoup.parse(html);
+ "<ボディ><ドキュメント化するコード例";
Document doc = Jsoup.parse(html);
パーサーは、提供されたコードから明確なHTMLコードを作成するために最善を尽くします。
-閉じられていないタグ(例:<ブラブラは<に変身しますブラブラ
- 暗黙的なタグ 例:
テーブルで囲まれている <テーブル>
-作成されたコードの構造は、HTML言語の標準(ヘッド、ボディ、およびページを構成する要素)を尊重します.
-閉じられていないタグ(例:<ブラブラは<に変身しますブラブラ
- 暗黙的なタグ 例:
-作成されたコードの構造は、HTML言語の標準(ヘッド、ボディ、およびページを構成する要素)を尊重します.
2- Stringからドキュメントを解析
HTMLをJavaの文字列でまとめたので、それを分解してコンテンツを取得したり、適切に記述されているかどうかを確認したり、変更したりします。エントリは、ファイルまたはWebのリンクから読み取ることができます.
事前定義された方法を使用する必要があります Jsoup.parse(文字列html) または Jsoup.parse(文字列html, 文字列 uri) ページがウェブからのものである場合。参照 class Jsoup.
String html = "<ヘッド>タイトル"
+ "<ボディ>
+ "<ボディ>
html en doc";
Document doc = Jsoup.parse(html);
メソッド Jsoup.parse(文字列html, 文字列URI) 入力された HTML コードを新しい文書。URI 引数は、相対 URL を絶対 URL に変換するために使用されます。予定 ドキュメントが URL で初期化されます 回復。それが不可能な場合は、 Jsoup.parse(String html).
パラメータとして渡される文字列はnullであってはならず、出力ドキュメントはhead et de body.もしあなたが obturerez ツリーの抽出が行われていないことがわかる例外。正しく読んでくださいdocumentation 詳細については.
3- body
分析したいボディスーツがあります。コードには、たとえば comments.
解決策は、Jsoup.parseBodyFragment(String html).
String html="
parseBodyFragment メソッドは、空のドキュメントを作成し、解析された HTML を本文に挿入します。もし、Jsoup.parse(String html)の場合、 同じ 結果は、出力を ボディフラグメントは、指定されたすべての要素が解析されたことを保証します.
<段落";
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
Document doc = Jsoup.parseBodyFragment(html);
Element body = doc.body();
parseBodyFragment メソッドは、空のドキュメントを作成し、解析された HTML を本文に挿入します。もし、Jsoup.parse(String html)の場合、 同じ 結果は、出力を ボディフラグメントは、指定されたすべての要素が解析されたことを保証します.
Document.body() メソッドは要素を取得します 下(子)体は、以下と同等です。doc.getElementsByTag("body").
次の場合は注意を怠らないことをお勧めします。回復するスクリプトを含むサイトからのデータ潑。のドキュメントを見るwhitelist そして、注文 clean(String html, Whitelist whitelist).
4- URLからドキュメントを読み込む
Web から HTML ドキュメントを検索して解析し、データを見つけるには、Jsoup.connect(String url).
Document doc = Jsoup.connect("http://siteweb.com/").get();
String title = doc.title();
span style="color: #990000;" メソッド>connect(String url) は、新しいconnexion get() は HTML ファイルを検索して解析します。a エラーが表示された場合、例外はbeing triggered.
インターフェース connexion は chaining 具体的な回答はこちら :
Document doc = Jsoup.connect("http://siteweb.com")
.data("query", "Java")
.userAgent("Mozilla")
.cookie("auth", "token")
.timeout(3000)
.post();
このメソッドは、http プロトコルと https プロトコルの URL のみをサポートします。ファイルをアップロードする必要がある場合は、parse(File in, String charsetName).
5-ファイルからドキュメントを読み込みます
HTMLを含むファイルがあり、それをロードし、分析し、データを抽出して操作します。メソッド Jsoup.parse(File in, String encoding, String Uri).
File input = new File("/temp/siteinput.html");
Document doc = Jsoup.parse(siteinput
, "UTF-8", "http://siteweb.com/");Uri パラメーターは、ドキュメント内の < 要素の前の相対 URL を解決するために使用されますhrefです>見つかります。空の String.
別の同様のメソッドがあります parse(File in, String encoding)。parse() メソッドは、ファイル パスを URI として使用します。この方法は、ローカルサーバーで作業する場合に効果的です.