Jsoup-quick-guide
jsoup-概要
jsoupは、HTMLベースのコンテンツを操作するためのJavaベースのライブラリです。 DOM、CSS、およびjqueryのようなメソッドを使用して、データを抽出および操作するための非常に便利なAPIを提供します。 WHATWG HTML5仕様を実装し、最新のブラウザーと同じDOMにHTMLを解析します。
jsoupライブラリは、WHATWG HTML5仕様を実装し、HTMLコンテンツを最新のブラウザーごとに同じDOMに解析します。
jsonpライブラリは次の機能を提供します。
- 複数読み取りサポート-URL、ファイル、または文字列を使用してHTMLを読み取り、解析します。
- * CSSセレクタ*-DOMトラバーサルまたはCSSセレクタを使用して、データを検索および抽出できます。
- DOM Manipulation -HTML要素、属性、およびテキストを操作できます。
- * XSS攻撃を防ぐ*-XSS攻撃を防ぐために、指定された安全なホワイトリストに対してユーザーが送信したコンテンツをクリーンアップできます。
- Tidy -整然としたHTMLを出力します。
- 無効なデータを処理します-jsoupは、閉じられていないタグ、暗黙的なタグを処理でき、ドキュメント構造を確実に作成できます。
jsoup-環境設定
ローカル環境のセットアップ
JUnitはJavaのフレームワークなので、最初の要件はJDKをマシンにインストールすることです。
システム要件
JDK | 1.5 or above. |
Memory | No minimum requirement. |
Disk Space | No minimum requirement. |
Operating System | No minimum requirement. |
ステップ1:マシンでのJavaインストールの検証
まず、コンソールを開き、作業しているオペレーティングシステムに基づいてjavaコマンドを実行します。
OS | Task | Command |
---|---|---|
Windows | Open Command Console | c:\> java -version |
Linux | Open Command Terminal | $ java -version |
Mac | Open Terminal | machine:< joseph$ java -version |
すべてのオペレーティングシステムの出力を確認しましょう-
OS | Output |
---|---|
Windows |
java version "1.6.0_21" Java(TM)SEランタイム環境(ビルド1.6.0_21-b07) Java HotSpot(TM)Client VM(ビルド17.0-b17、混合モード、共有) |
Linux |
java version "1.6.0_21" Java(TM)SEランタイム環境(ビルド1.6.0_21-b07) Java HotSpot(TM)Client VM(ビルド17.0-b17、混合モード、共有) |
Mac |
java version "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/technetwork/java/javase/downloads/indexl [https://www .oracle.com]。 このチュートリアルのインストールバージョンとしてJava 1.6.0_21を想定しています。
ステップ2:JAVA環境を設定する
*JAVA_HOME* 環境変数を設定して、Javaがマシンにインストールされているベースディレクトリの場所を指すようにします。 例えば。
OS | Output |
---|---|
Windows | Set the environment variable JAVA_HOME to C:\Program Files\Java\jdk1.6.0_21 |
Linux | export JAVA_HOME =/usr/local/java-current |
Mac | export JAVA_HOME =/Library/Java/Home |
Javaコンパイラの場所をシステムパスに追加します。
OS | Output |
---|---|
Windows | Append the string C:\Program Files\Java\jdk1.6.0_21\bin *at the end of the system variable, Path*. |
Linux | export PATH = $PATH:$JAVA_HOME/bin/ |
Mac | not required |
上記の説明に従って、コマンド java -version を使用してJavaのインストールを確認します。
ステップ3:jsoupアーカイブをダウンロードする
Maven Repositoryからjsoup jarファイルの最新バージョンをダウンロードします。 このチュートリアルを書いている時点で、jsoup-1.8.3.jarをダウンロードし、C:\> jsoupフォルダーにコピーしました。
OS | Archive name |
---|---|
Windows | jsoup-1.8.3.jar |
Linux | jsoup-1.8.3.jar |
Mac | jsoup-1.8.3.jar |
ステップ4:jsoup環境を設定する
*JSOUP_HOME* 環境変数を設定して、マシン上のjsoup jarが保存されているベースディレクトリの場所を指すようにします。 jsoup-1.8.3.jarをJSOUPフォルダーに保存したと仮定しましょう。
Sr.No | OS & Description |
---|---|
1 |
Windows 環境変数JSOUP_HOMEをC:\ JSOUPに設定します |
2 |
Linux export JSOUP_HOME =/usr/local/JSOUP |
3 |
Mac export JSOUP_HOME =/Library/JSOUP |
ステップ5:CLASSPATH変数を設定する
JSOUP jarの場所を指すように CLASSPATH 環境変数を設定します。
Sr.No | OS & Description |
---|---|
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 :. |
jsoup-文字列の解析
次の例では、HTML文字列を解析してDocumentオブジェクトを作成する方法を示します。
構文
Document document = Jsoup.parse(html);
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
説明
parse(String html)メソッドは、入力HTMLを新しいドキュメントに解析します。 このドキュメントオブジェクトを使用して、html 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></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
jsoup-ボディの解析
次の例では、HTML断片化文字列をHTMLボディとしてElementオブジェクトに解析する方法を示します。
構文
Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTMLフラグメント文字列。
- body -文書のbody要素の要素の子を表し、document.getElementsByTag( "body")と同等です。
説明
parseBodyFragment(String html)メソッドは、入力HTMLを新しいドキュメントに解析します。 このドキュメントオブジェクトを使用して、html bodyフラグメントの詳細を走査および取得できます。
例
たとえば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
jsoup-URLからの読み込み
次の例では、URLを使用してWebからHTMLを取得し、そのデータを見つけます。
構文
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- 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
jsoup-ファイルからの読み込み
次の例では、ファイルを使用してディスクからHTMLを取得し、そのデータを検索する方法を示します。
構文
String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- 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");
File input = new File(path.toURI());
Document document = Jsoup.parse(input, "UTF-8");
System.out.println(document.title());
}
}
テスト
C:\ jsoupフォルダに次のテストファイルを作成します。
<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
jsoup-DOMメソッドの使用
次の例は、HTML文字列をDocumentオブジェクトに解析した後のメソッドのようなDOMの使用例を示します。
構文
Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- sampleDiv -要素オブジェクトは、ID「sampleDiv」で識別されるhtmlノード要素を表します。
- リンク-要素オブジェクトは、タグ「a」で識別される複数のノード要素を表します。
説明
parse(String html)メソッドは、入力HTMLを新しいドキュメントに解析します。 このドキュメントオブジェクトを使用して、html 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 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
jsoup-セレクター構文の使用
次の例では、HTML文字列をDocumentオブジェクトに解析した後のセレクターメソッドの使用方法を示します。 jsoupは、CSSセレクターに似たセレクターをサポートします。
構文
Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- sampleDiv -要素オブジェクトは、ID「sampleDiv」で識別されるhtmlノード要素を表します。
- リンク-要素オブジェクトは、タグ「a」で識別される複数のノード要素を表します。
説明
document.select(expression)メソッドは、指定されたCSSセレクター式を解析して、html 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 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
jsoup-属性の抽出
次の例では、HTML文字列をDocumentオブジェクトに解析した後、dom要素の属性を取得するメソッドの使用方法を示します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Href: " + link.attr("href"));
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- link -要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
- * link.attr()*-attr(attribute)メソッドは、要素の属性を取得します。
説明
要素オブジェクトは、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
jsoup-テキストの抽出
次の例では、HTML文字列をDocumentオブジェクトに解析した後にテキストを取得するメソッドの使用方法を示します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
System.out.println("Text: " + link.text());
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- 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
jsoup-HTMLを抽出する
次の例では、メソッドを使用して、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: " + linkl());
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- link -要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
- * link.outerHtml()*-outerHtml()メソッドは、要素の完全なhtmlを取得します。
- * link()*-html()メソッドは、要素innerhtmlを取得します。
説明
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: " + linkl());
}
}
結果を検証する
次のように javac コンパイラを使用してクラスをコンパイルします。
C:\jsoup>javac JsoupTester.java
次に、JsoupTesterを実行して結果を確認します。
C:\jsoup>java JsoupTester
結果をご覧ください。
Outer HTML: <a href="www.google.com">Google</a>
Inner HTML: Google
jsoup-URLの操作
次の例では、htmlページに存在する相対URLと絶対URLを提供できるメソッドを紹介します。
構文
String url = "http://www.finddevguides.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 -ドキュメントオブジェクトはHTML DOMを表します。
- 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.finddevguides.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
Absolute Link: https://www.finddevguides.com/index
Absolute Link: https://www.finddevguides.com/index
jsoup-属性を設定する
次の例では、HTML文字列をDocumentオブジェクトに解析した後、dom要素の属性を設定するメソッドの使用、一括更新、クラスメソッドの追加/削除を紹介します。
構文
Document document = Jsoup.parse(html);
Element link = document.select("a").first();
link.attr("href","www.yahoo.com");
link.addClass("header");
link.removeClass("header");
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- link -要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
- * link.attr()*-attr(attribute、value)メソッドは、要素の属性に対応する値を設定します。
- * link.addClass()*-addClass(class)メソッドは、クラス属性の下にクラスを追加します。
- * link.removeClass()*-removeClass(class)メソッドは、class属性の下のクラスを削除します。
説明
要素オブジェクトは、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>
jsoup-HTMLを設定する
次の例では、HTML文字列をDocumentオブジェクトに解析した後、dom要素にhtmlを設定、追加、または追加するメソッドの使用方法を示します。
構文
Document document = Jsoup.parse(html);
Element div = document.getElementById("sampleDiv");
divl("<p>This is a sample content.</p>");
div.prepend("<p>Initial Text</p>");
div.append("<p>End Text</p>");
どこで
- document -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- div -要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
- * divl()*-html(content)メソッドは、要素の外側のhtmlを対応する値に置き換えます。
- * div.prepend()*-prepend(content)メソッドは、外側のhtmlの前にコンテンツを追加します。
- * div.append()*-append(content)メソッドは、外側のhtmlの後にコンテンツを追加します。
説明
Elementオブジェクトはdom要素を表し、htmlを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>"
+ "<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());
divl("<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>
jsoup-テキストコンテンツの設定
次の例では、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 -ドキュメントオブジェクトはHTML DOMを表します。
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -HTML文字列。
- div -要素オブジェクトは、アンカータグを表すhtmlノード要素を表します。
- * div.text()*-text(content)メソッドは、要素のコンテンツを対応する値に置き換えます。
- * div.prepend()*-prepend(content)メソッドは、外側のhtmlの前にコンテンツを追加します。
- * div.append()*-append(content)メソッドは、外側のhtmlの後にコンテンツを追加します。
説明
Elementオブジェクトはdom要素を表し、htmlを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>"
+ "<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>
jsoup-HTMLのサニタイズ
次の例では、XSS攻撃またはクロスサイトスクリプティング攻撃の防止を示します。
構文
String safeHtml = Jsoup.clean(html, Whitelist.basic());
どこで
- Jsoup -指定されたHTML文字列を解析するメインクラス。
- html -初期HTML文字列。
- safeHtml -クリーンなHTML。
- ホワイトリスト-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>