jsoup 快速指南



jsoup - 概述

jsoup 是一個基於 Java 的庫,用於處理基於 HTML 的內容。它提供了一個非常方便的 API 來提取和操作資料,並結合了 DOM、CSS 和類似 jQuery 的方法的優勢。它實現了 WHATWG HTML5 規範,並像現代瀏覽器一樣將 HTML 解析為相同的 DOM。

jsoup 庫實現了 WHATWG HTML5 規範,並將 HTML 內容解析為與現代瀏覽器相同的 DOM。

jsonp 庫提供以下功能。

  1. 多重讀取支援 - 它使用 URL、檔案或字串讀取和解析 HTML。

  2. CSS 選擇器 - 它可以使用 DOM 遍歷或 CSS 選擇器查詢和提取資料。

  3. DOM 操作 - 它可以操作 HTML 元素、屬性和文字。

  4. 防止 XSS 攻擊 - 它可以根據給定的安全白名單清理使用者提交的內容,以防止 XSS 攻擊。

  5. 整理 - 它輸出整潔的 HTML。

  6. 處理無效資料 - jsoup 可以處理未關閉的標籤、隱式標籤,並可以可靠地建立文件結構。

jsoup - 環境設定

步驟 1:驗證您的計算機上是否安裝了 Java

首先,開啟控制檯並根據您使用的作業系統執行 java 命令。

作業系統 任務 命令
Windows 開啟命令控制檯 c:\> java -version
Linux 開啟命令終端 $ java -version
Mac 開啟終端 machine:< joseph$ java -version

讓我們驗證所有作業系統的輸出:

作業系統 輸出
Windows

Java 11.0.11 2021-04-20 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)

Linux

Java 11.0.11 2021-04-20 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)

Mac

Java 11.0.11 2021-04-20 LTS

Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)

Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)

如果您的系統上未安裝 Java,請從以下連結下載 Java 軟體開發工具包 (SDK) www.oracle.com/technetwork/java/javase/downloads/index.html。在本教程中,我們假設已安裝 Java 11.0.11 版本。

步驟 2:設定 JAVA 環境

設定**JAVA_HOME**環境變數,使其指向 Java 安裝在您計算機上的基目錄位置。例如:

作業系統 輸出
Windows 將環境變數 JAVA_HOME 設定為 C:\Program Files\Java\jdk11.0.11
Linux export JAVA_HOME = /usr/local/java-current
Mac export JAVA_HOME = /Library/Java/Home

將 Java 編譯器位置新增到系統路徑。

作業系統 輸出
Windows 在系統變數**Path**的末尾追加字串**C:\Program Files\Java\jdk11.0.11\bin**。
Linux export PATH = $PATH:$JAVA_HOME/bin/
Mac 不需要

使用命令**java -version**驗證 Java 安裝,如上所述。

步驟 3:下載 jsoup 存檔

Maven 倉庫下載最新版本的 jsoup jar 檔案。在撰寫本教程時,我們已下載 jsoup-1.14.3.jar 並將其複製到 C:\>jsoup 資料夾中。

作業系統 存檔名稱
Windows jsoup-1.14.3.jar
Linux jsoup-1.14.3.jar
Mac jsoup-1.14.3.jar

步驟 4:設定 jsoup 環境

設定**JSOUP_HOME**環境變數,使其指向 jsoup jar 儲存在您計算機上的基目錄位置。假設我們將 jsoup-1.14.3.jar 儲存在 JSOUP 資料夾中。

序號 作業系統和說明
1

Windows

將環境變數 JSOUP_HOME 設定為 C:\JSOUP

2

Linux

export JSOUP_HOME = /usr/local/JSOUP

3

Mac

export JSOUP_HOME = /Library/JSOUP

步驟 5:設定 CLASSPATH 變數

設定**CLASSPATH**環境變數,使其指向 JSOUP jar 的位置。

序號 作業系統和說明
1

Windows

將環境變數 CLASSPATH 設定為 %CLASSPATH%;%JSOUP_HOME%\jsoup-1.14.3.jar;.;

2

Linux

export CLASSPATH = $CLASSPATH:$JSOUP_HOME/jsoup-1.14.3.jar:.

3

Mac

export CLASSPATH = $CLASSPATH:$JSOUP_HOME/jsoup-1.14.3.jar:.

jsoup - 解析字串

以下示例將展示如何將 HTML 字串解析為 Document 物件。

語法

Document document = Jsoup.parse(html);

其中

  • document - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

描述

parse(String html) 方法將輸入的 HTML 解析為新的 Document。此 document 物件可用於遍歷並獲取 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 片段字串解析為 Element 物件作為 html 正文。

語法

Document document = Jsoup.parseBodyFragment(html);
Element body = document.body();

其中

  • document - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 片段字串。

  • body - 表示文件正文元素的子元素,等效於 document.getElementsByTag("body")。

描述

parseBodyFragment(String html) 方法將輸入的 HTML 解析為新的 Document。此 document 物件可用於遍歷並獲取 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

jsoup - 載入URL

以下示例將展示如何使用 url 從 Web 獲取 HTML,然後查詢其資料。

語法

String url = "http://www.google.com";
Document document = Jsoup.connect(url).get();

其中

  • document - 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 - 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.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

jsoup - 使用DOM方法

以下示例將展示在將 HTML 字串解析為 Document 物件後使用類似 DOM 的方法。

語法

Document document = Jsoup.parse(html);
Element sampleDiv = document.getElementById("sampleDiv");
Elements links = sampleDiv.getElementsByTag("a");

其中

  • document - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • sampleDiv - Element 物件表示由 id "sampleDiv" 標識的 html 節點元素。

  • links - Elements 物件表示由標籤 "a" 標識的多個節點元素。

描述

parse(String html) 方法將輸入的 HTML 解析為新的 Document。此 document 物件可用於遍歷並獲取 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 - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • sampleDiv - Element 物件表示由 id "sampleDiv" 標識的 html 節點元素。

  • links - Elements 物件表示由標籤 "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 - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • link - Element 物件表示代表錨標籤的 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

jsoup - 提取文字

以下示例將展示在將 HTML 字串解析為 Document 物件後使用方法獲取文字。

語法

Document document = Jsoup.parse(html);
Element link = document.select("a").first();     
System.out.println("Text: " + link.text());

其中

  • document - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • link - Element 物件表示代表錨標籤的 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: " + link.html());

其中

  • document - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • link - Element 物件表示代表錨標籤的 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

jsoup - 處理URL

以下示例將展示可以提供 html 頁面中相對 URL 和絕對 URL 的方法。

語法

String url = "https://tutorialspoint.tw/";
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 - document 物件表示 HTML DOM。

  • Jsoup - 用於連線 url 並獲取 html 內容的主類。

  • link - Element 物件表示代表錨標籤的 html 節點元素。

  • link.attr("href") - 提供錨標籤中 href 的值。它可能是相對的或絕對的。

  • link.attr("abs:href") - 根據文件的基 URI 解析後提供絕對 url。

  • link.absUrl("href") - 根據文件的基 URI 解析後提供絕對 url。

描述

Element 物件表示 dom 元素,並提供方法來獲取 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 = "https://tutorialspoint.tw/";
      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://tutorialspoint.tw/index.htm
Absolute Link: https://tutorialspoint.tw/index.htm

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 - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • link - Element 物件表示代表錨標籤的 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>

jsoup - 設定HTML

以下示例將展示在將 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 - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • div - Element 物件表示代表錨標籤的 html 節點元素。

  • div.html() - 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());
      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>

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 - document 物件表示 HTML DOM。

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - HTML 字串。

  • div - Element 物件表示代表錨標籤的 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, Safelist.basic());  

其中

  • Jsoup - 用於解析給定 HTML 字串的主類。

  • html - 初始 HTML 字串。

  • safeHtml - 清理後的 HTML。

  • Safelist - 用於提供預設配置以保護 html 的物件。

  • clean() - 使用白名單清理 html。

描述

Jsoup 物件使用白名單配置清理 html。

示例

使用您選擇的任何編輯器在例如 C:/> jsoup 中建立以下 Java 程式。

JsoupTester.java

import org.jsoup.Jsoup;
import org.jsoup.safety.Safelist;

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, Safelist.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>
廣告