jsoup-クイックガイド
jsoupは、HTMLベースのコンテンツを処理するためのJavaベースのライブラリです。DOM、CSS、jqueryに似た最高のメソッドを使用して、データを抽出および操作するための非常に便利なAPIを提供します。これは、WHATWG HTML5仕様を実装し、HTMLを最新のブラウザーと同じDOMに解析します。
jsoupライブラリはWHATWGHTML5仕様を実装し、HTMLコンテンツを最新のブラウザーと同じDOMに解析します。
jsonpライブラリは以下の機能を提供します。
Multiple Read Support − URL、ファイル、または文字列を使用してHTMLを読み取り、解析します。
CSS Selectors − DOMトラバーサルまたはCSSセレクターを使用して、データを検索および抽出できます。
DOM Manipulation − HTML要素、属性、およびテキストを操作できます。
Prevent XSS attacks − XSS攻撃を防ぐために、ユーザーが送信したコンテンツを特定の安全なホワイトリストに対してクリーンアップできます。
Tidy −きちんとしたHTMLを出力します。
Handles invalid data − jsoupは、閉じられていないタグ、暗黙のタグを処理でき、ドキュメント構造を確実に作成できます。
ローカル環境のセットアップ
JUnitはJavaのフレームワークであるため、最初の要件はJDKをマシンにインストールすることです。
システム要件
JDK | 1.5以上。 |
---|---|
記憶 | 最小要件はありません。 |
ディスクスペース | 最小要件はありません。 |
オペレーティング・システム | 最小要件はありません。 |
ステップ1:マシンへのJavaのインストールを確認する
まず、コンソールを開き、作業しているオペレーティングシステムに基づいてJavaコマンドを実行します。
OS | 仕事 | コマンド |
---|---|---|
ウィンドウズ | コマンドコンソールを開く | c:\> java -version |
Linux | コマンドターミナルを開く | $ java -version |
マック | オープンターミナル | マシン:<joseph $ java -version |
すべてのオペレーティングシステムの出力を確認しましょう-
OS | 出力 |
---|---|
ウィンドウズ | Javaバージョン "1.6.0_21" Java(TM)SEランタイム環境(ビルド1.6.0_21-b07) Java HotSpot(TM)クライアントVM(ビルド17.0-b17、混合モード、共有) |
Linux | Javaバージョン "1.6.0_21" Java(TM)SEランタイム環境(ビルド1.6.0_21-b07) Java HotSpot(TM)クライアントVM(ビルド17.0-b17、混合モード、共有) |
マック | Javaバージョン "1.6.0_21" Java(TM)SEランタイム環境(ビルド1.6.0_21-b07) Java HotSpot(TM)64ビットサーバーVM(ビルド17.0-b17、混合モード、共有) |
システムにJavaがインストールされていない場合は、次のリンクからJavaソフトウェア開発キット(SDK)をダウンロードしてください。 https://www.oracle.com。このチュートリアルのインストールバージョンとして、Java1.6.0_21を想定しています。
ステップ2:JAVA環境を設定する
をセットする JAVA_HOMEJavaがマシンにインストールされているベースディレクトリの場所を指す環境変数。例えば。
OS | 出力 |
---|---|
ウィンドウズ | 環境変数JAVA_HOMEをC:\ Program Files \ Java \ jdk1.6.0_21に設定します |
Linux | export JAVA_HOME = / usr / local / java-current |
マック | export JAVA_HOME = / Library / Java / Home |
Javaコンパイラの場所をシステムパスに追加します。
OS | 出力 |
---|---|
ウィンドウズ | 文字列を追加します C:\Program Files\Java\jdk1.6.0_21\bin システム変数の最後に、 Path。 |
Linux | export PATH = $ PATH:$ JAVA_HOME / bin / |
マック | 必要ありません |
コマンドを使用してJavaのインストールを確認します java -version 上で説明したように。
ステップ3:jsoupアーカイブをダウンロードする
Mavenリポジトリから最新バージョンのjsoupjarファイルをダウンロードします。このチュートリアルの執筆時点で、jsoup-1.8.3.jarをダウンロードし、C:\> jsoupフォルダーにコピーしました。
OS | アーカイブ名 |
---|---|
ウィンドウズ | jsoup-1.8.3.jar |
Linux | jsoup-1.8.3.jar |
マック | jsoup-1.8.3.jar |
ステップ4:jsoup環境を設定する
をセットする JSOUP_HOMEjsoupjarがマシンに保存されているベースディレクトリの場所を指す環境変数。jsoup-1.8.3.jarをJSOUPフォルダーに保存したとしましょう。
シニア番号 | OSと説明 |
---|---|
1 | Windows 環境変数JSOUP_HOMEをC:\ JSOUPに設定します |
2 | Linux エクスポートJSOUP_HOME = / usr / local / JSOUP |
3 | Mac エクスポートJSOUP_HOME = / Library / JSOUP |
ステップ5:CLASSPATH変数を設定する
をセットする CLASSPATH JSOUPjarの場所を指す環境変数。
シニア番号 | OSと説明 |
---|---|
1 | Windows 環境変数CLASSPATHを%CLASSPATH%;%JSOUP_HOME%\ jsoup-1.8.3.jar;。;に設定します。 |
2 | Linux export CLASSPATH = $ CLASSPATH:$ JSOUP_HOME /jsoup-1.8.3.jar:。 |
3 | Mac export CLASSPATH = $ CLASSPATH:$ JSOUP_HOME /jsoup-1.8.3.jar:。 |
次の例では、HTML文字列をDocumentオブジェクトに解析する方法を紹介します。
構文
Document document = Jsoup.parse(html);
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
説明
parse(String html)メソッドは、入力HTMLを新しいドキュメントに解析します。このドキュメントオブジェクトは、htmldomの詳細をトラバースして取得するために使用できます。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body><p>Sample Content</p></body></html>";
Document document = Jsoup.parse(html);
System.out.println(document.title());
Elements paragraphs = document.getElementsByTag("p");
for (Element paragraph : paragraphs) {
System.out.println(paragraph.text());
}
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Sample Title
Sample Content
次の例では、HTMLフラグメント文字列をhtml本体としてElementオブジェクトに解析する方法を示します。
構文
Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTMLフラグメント文字列。
body −ドキュメントのbody要素の要素の子を表し、document.getElementsByTag( "body")と同等です。
説明
parseBodyFragment(String html)メソッドは、入力HTMLを新しいドキュメントに解析します。このドキュメントオブジェクトを使用して、html本文フラグメントの詳細をトラバースおよび取得できます。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<div><p>Sample Content</p>";
Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();
Elements paragraphs = body.getElementsByTag("p");
for (Element paragraph : paragraphs) {
System.out.println(paragraph.text());
}
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Sample Content
次の例では、URLを使用してWebからHTMLをフェッチし、そのデータを検索する方法を示します。
構文
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −URLを接続してHTML文字列を取得するメインクラス。
url −ロードするhtmlページのURL。
説明
connect(url)メソッドはurlに接続し、get()メソッドは要求されたURLのhtmlを返します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTester {
public static void main(String[] args) throws IOException {
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
System.out.println(document.title());
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Google
次の例では、ファイルを使用してディスクからHTMLをフェッチし、そのデータを検索する方法を示します。
構文
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −URLを接続してHTML文字列を取得するメインクラス。
url −ロードするhtmlページのURL。
説明
connect(url)メソッドはurlに接続し、get()メソッドは要求されたURLのhtmlを返します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupTester {
public static void main(String[] args) throws IOException, URISyntaxException {
URL path = ClassLoader.getSystemResource("test.htm");
File input = new File(path.toURI());
Document document = Jsoup.parse(input, "UTF-8");
System.out.println(document.title());
}
}
test.htm
C:\ jsoupフォルダーに次のtest.htmファイルを作成します。
<html>
<head>
<title>Sample Title</title>
</head>
<body>
<p>Sample Content</p>
</body>
</html>
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Sample Title
次の例では、HTML文字列をDocumentオブジェクトに解析した後、DOMのようなメソッドを使用する方法を紹介します。
構文
Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
sampleDiv −要素オブジェクトは、ID「sampleDiv」で識別されるhtmlノード要素を表します。
links − Elementsオブジェクトは、タグ「a」で識別される複数のノード要素を表します。
説明
parse(String html)メソッドは、入力HTMLを新しいドキュメントに解析します。このドキュメントオブジェクトは、htmldomの詳細をトラバースして取得するために使用できます。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a></div>"
+"</body></html>";
Document document = Jsoup.parse(html);
System.out.println(document.title());
Elements paragraphs = document.getElementsByTag("p");
for (Element paragraph : paragraphs) {
System.out.println(paragraph.text());
}
Element sampleDiv = document.getElementById("sampleDiv");
System.out.println("Data: " + sampleDiv.text());
Elements links = sampleDiv.getElementsByTag("a");
for (Element link : links) {
System.out.println("Href: " + link.attr("href"));
System.out.println("Text: " + link.text());
}
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Sample Title
Sample Content
Data: Google
Href: www.google.com
Text: Google
次の例では、HTML文字列をDocumentオブジェクトに解析した後のセレクターメソッドの使用方法を示します。jsoupは、CSSセレクターと同様のセレクターをサポートします。
構文
Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
sampleDiv −要素オブジェクトは、ID「sampleDiv」で識別されるhtmlノード要素を表します。
links − Elementsオブジェクトは、タグ「a」で識別される複数のノード要素を表します。
説明
document.select(expression)メソッドは、指定されたCSSセレクター式を解析してhtmldom要素を選択します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+ "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
+ "<img name='yahoo' src='yahoo.jpg' />"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Elements links = document.select("a[href]");
for (Element link : links) {
System.out.println("Href: " + link.attr("href"));
System.out.println("Text: " + link.text());
}
// img with src ending .png
Elements pngs = document.select("img[src$=.png]");
for (Element png : pngs) {
System.out.println("Name: " + png.attr("name"));
}
// div with class=header
Element headerDiv = document.select("div.header").first();
System.out.println("Id: " + headerDiv.id());
// direct a after h3
Elements sampleLinks = document.select("h3 > a");
for (Element link : sampleLinks) {
System.out.println("Text: " + link.text());
}
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Href: www.google.com
Text: Google
Name: google
Id: imageDiv
Text: Sample
次の例では、HTML文字列をDocumentオブジェクトに解析した後、メソッドを使用してdom要素の属性を取得する方法を示します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
link −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
link.attr() − attr(attribute)メソッドは要素属性を取得します。
説明
Elementオブジェクトは、dom要素を表し、dom要素の属性を取得するためのさまざまなメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Href: www.google.com
次の例では、HTML文字列をDocumentオブジェクトに解析した後にテキストを取得するメソッドの使用方法を示します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Text: " + link.text());
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
link −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
link.text() − text()メソッドは要素のテキストを取得します。
説明
Elementオブジェクトは、dom要素を表し、dom要素のテキストを取得するためのさまざまなメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Element link = document.select("a").first();
System.out.println("Text: " + link.text());
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Text: Google
次の例では、HTML文字列をDocumentオブジェクトに解析した後、内部htmlと外部htmlを取得するメソッドの使用方法を示します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Outer HTML: " + link.outerHtml());
System.out.println("Inner HTML: " + link.html());
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
link −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
link.outerHtml() −outerHtml()メソッドは要素の完全なhtmlを取得します。
link.html() − html()メソッドは、要素の内部htmlを取得します。
説明
Elementオブジェクトは、dom要素を表し、dom要素のhtmlを取得するためのさまざまなメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a href='www.google.com'>Google</a>"
+ "<h3><a>Sample</a><h3>"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//a with href
Element link = document.select("a").first();
System.out.println("Outer HTML: " + link.outerHtml());
System.out.println("Inner HTML: " + link.html());
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Outer HTML: <a href="www.google.com">Google</a>
Inner HTML: Google
次の例では、htmlページに存在する相対URLと絶対URLを提供できるメソッドを紹介します。
構文
String url = "http://www.tutorialspoint.com/";
Document document = Jsoup.connect(url).get();
Element link = document.select("a").first();
System.out.println("Relative Link: " + link.attr("href"));
System.out.println("Absolute Link: " + link.attr("abs:href"));
System.out.println("Absolute Link: " + link.absUrl("href"));
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup − URLに接続し、HTMLコンテンツを取得するメインクラス。
link −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
link.attr("href")−アンカータグに存在するhrefの値を提供します。相対的または絶対的である可能性があります。
link.attr("abs:href") −ドキュメントのベースURIに対して解決した後、絶対URLを提供します。
link.absUrl("href") −ドキュメントのベースURIに対して解決した後、絶対URLを提供します。
説明
要素オブジェクトはドメインを表し、htmlページに存在する相対URLと絶対URLを取得するメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) throws IOException {
String url = "http://www.tutorialspoint.com/";
Document document = Jsoup.connect(url).get();
Element link = document.select("a").first();
System.out.println("Relative Link: " + link.attr("href"));
System.out.println("Absolute Link: " + link.attr("abs:href"));
System.out.println("Absolute Link: " + link.absUrl("href"));
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Relative Link: index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm
Absolute Link: https://www.tutorialspoint.com/index.htm
次の例では、メソッドを使用してdom要素の属性を設定し、HTML文字列をDocumentオブジェクトに解析した後、クラスメソッドを一括更新および追加/削除する方法を示します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
link.attr("href","www.yahoo.com");
link.addClass("header");
link.removeClass("header");
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
link −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
link.attr() − attr(attribute、value)メソッドは、要素属性に対応する値を設定します。
link.addClass() − addClass(class)メソッドは、class属性の下にクラスを追加します。
link.removeClass() − removeClass(class)メソッドは、class属性の下のクラスを削除します。
説明
Elementオブジェクトは、dom要素を表し、dom要素の属性を取得するためのさまざまなメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<p>Sample Content</p>"
+ "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
+ "<div class='comments'><a href='www.sample1.com'>Sample1</a>"
+ "<a href='www.sample2.com'>Sample2</a>"
+ "<a href='www.sample3.com'>Sample3</a><div>"
+"</div>"
+ "<div id='imageDiv' class='header'><img name='google' src='google.png' />"
+ "<img name='yahoo' src='yahoo.jpg' />"
+"</div>"
+"</body></html>";
Document document = Jsoup.parse(html);
//Example: set attribute
Element link = document.getElementById("googleA");
System.out.println("Outer HTML Before Modification :" + link.outerHtml());
link.attr("href","www.yahoo.com");
System.out.println("Outer HTML After Modification :" + link.outerHtml());
System.out.println("---");
//Example: add class
Element div = document.getElementById("sampleDiv");
System.out.println("Outer HTML Before Modification :" + div.outerHtml());
link.addClass("header");
System.out.println("Outer HTML After Modification :" + div.outerHtml());
System.out.println("---");
//Example: remove class
Element div1 = document.getElementById("imageDiv");
System.out.println("Outer HTML Before Modification :" + div1.outerHtml());
div1.removeClass("header");
System.out.println("Outer HTML After Modification :" + div1.outerHtml());
System.out.println("---");
//Example: bulk update
Elements links = document.select("div.comments a");
System.out.println("Outer HTML Before Modification :" + links.outerHtml());
links.attr("rel", "nofollow");
System.out.println("Outer HTML Before Modification :" + links.outerHtml());
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Outer HTML Before Modification :<a id="googleA" href="www.google.com">Google</a>
Outer HTML After Modification :<a id="googleA" href="www.yahoo.com">Google</a>
---
Outer HTML Before Modification :<div id="sampleDiv">
<a id="googleA" href="www.yahoo.com">Google</a>
</div>
Outer HTML After Modification :<div id="sampleDiv">
<a id="googleA" href="www.yahoo.com" class="header">Google</a>
</div>
---
Outer HTML Before Modification :<div id="imageDiv" class="header">
<img name="google" src="google.png">
<img name="yahoo" src="yahoo.jpg">
</div>
Outer HTML After Modification :<div id="imageDiv" class="">
<img name="google" src="google.png">
<img name="yahoo" src="yahoo.jpg">
</div>
---
Outer HTML Before Modification :<a href="www.sample1.com">Sample1</a>
<a href="www.sample2.com">Sample2</a>
<a href="www.sample3.com">Sample3</a>
Outer HTML Before Modification :<a href="www.sample1.com" rel="nofollow">Sample1</a>
<a href="www.sample2.com" rel="nofollow">Sample2</a>
<a href="www.sample3.com" rel="nofollow">Sample3</a>
次の例では、HTML文字列をDocumentオブジェクトに解析した後、メソッドを使用してhtmlをdom要素に設定、追加、または追加する方法を示します。
構文
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
div.html("<p>This is a sample content.</p>");
div.prepend("<p>Initial Text</p>");
div.append("<p>End Text</p>");
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
div −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
div.html() − html(content)メソッドは、要素の外側のhtmlを対応する値に置き換えます。
div.prepend() − prepend(content)メソッドは、外側のhtmlの前にコンテンツを追加します。
div.append() − append(content)メソッドは、外側のhtmlの後にコンテンツを追加します。
説明
Elementオブジェクトは、dom要素を表し、dom要素にhtmlを設定、追加、または追加するためのさまざまなメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
+"</body></html>";
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
System.out.println("Outer HTML Before Modification :\n" + div.outerHtml());
div.html("<p>This is a sample content.</p>");
System.out.println("Outer HTML After Modification :\n" + div.outerHtml());
div.prepend("<p>Initial Text</p>");
System.out.println("After Prepend :\n" + div.outerHtml());
div.append("<p>End Text</p>");
System.out.println("After Append :\n" + div.outerHtml());
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Outer HTML Before Modification :
<div id="sampleDiv">
<a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
<p>This is a sample content.</p>
</div>
After Prepend :
<div id="sampleDiv">
<p>Initial Text</p>
<p>This is a sample content.</p>
</div>
After Append :
<div id="sampleDiv">
<p>Initial Text</p>
<p>This is a sample content.</p>
<p>End Text</p>
</div>
Outer HTML Before Modification :
<span>Sample Content</span>
Outer HTML After Modification :
<span>Sample Content</span>
次の例では、HTML文字列をDocumentオブジェクトに解析した後、メソッドを使用してdom要素にテキストを設定、追加、または追加する方法を示します。
構文
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
div.text("This is a sample content.");
div.prepend("Initial Text.");
div.append("End Text.");
どこ
document −ドキュメントオブジェクトはHTMLDOMを表します。
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −HTML文字列。
div −要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
div.text() − text(content)メソッドは、要素のコンテンツを対応する値に置き換えます。
div.prepend() − prepend(content)メソッドは、外側のhtmlの前にコンテンツを追加します。
div.append() − append(content)メソッドは、外側のhtmlの後にコンテンツを追加します。
説明
Elementオブジェクトは、dom要素を表し、dom要素にhtmlを設定、追加、または追加するためのさまざまなメソッドを提供します。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class JsoupTester {
public static void main(String[] args) {
String html = "<html><head><title>Sample Title</title></head>"
+ "<body>"
+ "<div id='sampleDiv'><a id='googleA' href='www.google.com'>Google</a></div>"
+"</body></html>";
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
System.out.println("Outer HTML Before Modification :\n" + div.outerHtml());
div.text(This is a sample content.");
System.out.println("Outer HTML After Modification :\n" + div.outerHtml());
div.prepend("Initial Text.");
System.out.println("After Prepend :\n" + div.outerHtml());
div.append("End Text.");
System.out.println("After Append :\n" + div.outerHtml());
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Outer HTML Before Modification :
<div id="sampleDiv">
<a id="googleA" href="www.google.com">Google</a>
</div>
Outer HTML After Modification :
<div id="sampleDiv">
This is a sample content.
</div>
After Prepend :
<div id="sampleDiv">
Initial Text.This is a sample content.
</div>
After Append :
<div id="sampleDiv">
Initial Text.This is a sample content.End Text.
</div>
次の例では、XSS攻撃またはクロスサイトスクリプティング攻撃の防止について説明します。
構文
String safeHtml = Jsoup.clean(html, Whitelist.basic());
どこ
Jsoup −指定されたHTML文字列を解析するメインクラス。
html −最初のHTML文字列。
safeHtml −クリーンアップされたHTML。
Whitelist −htmlを保護するためのデフォルト構成を提供するオブジェクト。
clean() −ホワイトリストを使用してHTMLをクリーンアップします。
説明
Jsoupオブジェクトは、ホワイトリスト構成を使用してhtmlをサニタイズします。
例
C:/> jsoupなどで任意のエディタを使用して、次のJavaプログラムを作成します。
JsoupTester.java
import org.jsoup.Jsoup;
import org.jsoup.safety.Whitelist;
public class JsoupTester {
public static void main(String[] args) {
String html = "<p><a href='http://example.com/'"
+" onclick='checkData()'>Link</a></p>";
System.out.println("Initial HTML: " + html);
String safeHtml = Jsoup.clean(html, Whitelist.basic());
System.out.println("Cleaned HTML: " +safeHtml);
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ:
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果を見てください。
Initial HTML: <p><a href='http://example.com/' onclick='checkData()'>Link</a></p>
Cleaned HTML: <p><a href="http://example.com/" rel="nofollow">Link</a></p>