Jsoup-quick-guide

提供:Dev Guides
移動先:案内検索

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>