jsoup - 快速指南


jsoup - 概述

jsoup 是一个基于 Java 的库,用于处理基于 HTML 的内容。它提供了一个非常方便的 API 来提取和操作数据,使用最好的 DOM、CSS 和类似 jquery 的方法。它实现了 WHATWG HTML5 规范,并将 HTML 解析为与现代浏览器相同的 DOM。

jsoup libary 实现 WHATWG HTML5 规范,并将 HTML 内容解析为与现代浏览器相同的 DOM。

jsonp 库提供以下功能。

  1. 多重读取支持- 它使用 URL、文件或字符串读取和解析 HTML。

  2. CSS 选择器它可以使用 DOM 遍历或 CSS 选择器来查找和提取数据。

  3. DOM 操作它可以操作 HTML 元素、属性和文本。

  4. 防止XSS攻击它可以根据给定的安全白名单清理用户提交的内容,以防止XSS攻击。

  5. Tidy它输出整洁的 HTML。

  6. 处理无效数据- jsoup 可以处理未封闭的标签、隐式标签,并且可以可靠地创建文档结构。

jsoup - 环境设置

第 1 步:验证计算机中的 Java 安装

首先,打开控制台并根据您正在使用的操作系统执行java命令。

操作系统 任务 命令
Windows 打开命令控制台 c:\> java -版本
Linux 打开命令终端 $ java -版本
苹果 打开终端 机器:< joseph$ java -版本

让我们验证所有操作系统的输出 -

操作系统 输出
Windows

Java 11.0.11 2021-04-20 LTS

Java(TM) SE 运行时环境 18.9(内部版本 11.0.11+9-LTS-194)

Java HotSpot(TM) 64 位服务器 VM 18.9(内部版本 11.0.11+9-LTS-194,混合模式)

Linux

Java 11.0.11 2021-04-20 LTS

Java(TM) SE 运行时环境 18.9(内部版本 11.0.11+9-LTS-194)

Java HotSpot(TM) 64 位服务器 VM 18.9(内部版本 11.0.11+9-LTS-194,混合模式)

苹果

Java 11.0.11 2021-04-20 LTS

Java(TM) SE 运行时环境 18.9(内部版本 11.0.11+9-LTS-194)

Java HotSpot(TM) 64 位服务器 VM 18.9(内部版本 11.0.11+9-LTS-194,混合模式)

如果您的系统上没有安装 Java,请从以下链接下载 Java 软件开发工具包 (SDK):www.oracle.com/technetwork/java/javase/downloads/index.html。我们假设 Java 11.0.11 作为本教程的安装版本。

第二步:设置JAVA环境

设置JAVA_HOME环境变量以指向计算机上安装 Java 的基本目录位置。例如。

操作系统 输出
Windows 设置环境变量JAVA_HOME为C:\Program Files\Java\jdk11.0.11
Linux 导出 JAVA_HOME = /usr/local/java-current
苹果 导出 JAVA_HOME = /Library/Java/Home

将 Java 编译器位置附加到系统路径。

操作系统 输出
Windows 将字符串C:\Program Files\Java\jdk11.0.11\bin添加到系统变量Path的末尾。
Linux 导出路径 = $PATH:$JAVA_HOME/bin/
苹果 不需要

如上所述,使用命令java -version验证 Java 安装。

第 3 步:下载 jsoup 存档

从Maven Repository下载最新版本的 jsoup jar 文件。在编写本教程时,我们已经下载了 jsoup-1.14.3.jar 并将其复制到 C:\>jsoup 文件夹中。

操作系统 档案名称
Windows jsoup-1.14.3.jar
Linux jsoup-1.14.3.jar
苹果 jsoup-1.14.3.jar

第四步:设置jsoup环境

将JSOUP_HOME环境变量设置为指向计算机上存储 jsoup jar 的基本目录位置。假设我们已将 jsoup-1.14.3.jar 存储在 JSOUP 文件夹中。

先生编号 操作系统和描述
1

Windows

将环境变量 JSOUP_HOME 设置为 C:\JSOUP

2

Linux

导出 JSOUP_HOME = /usr/local/JSOUP

3

苹果

导出 JSOUP_HOME = /Library/JSOUP

第 5 步:设置 CLASSPATH 变量

设置CLASSPATH环境变量以指向 JSOUP jar 位置。

先生编号 操作系统和描述
1

Windows

设置环境变量CLASSPATH为%CLASSPATH%;%JSOUP_HOME%\jsoup-1.14.3.jar;.;

2

Linux

导出 CLASSPATH = $CLASSPATH:$JSOUP_HOME/jsoup-1.14.3.jar:.

3

苹果

导出 CLASSPATH = $CLASSPATH:$JSOUP_HOME/jsoup-1.14.3.jar:.

jsoup - 解析字符串

以下示例将展示如何将 HTML 字符串解析为 Document 对象。

句法

Document document = Jsoup.parse(html);

在哪里

  • document - 文档对象代表 HTML DOM。

  • Jsoup - 解析给定 HTML 字符串的主类。

  • html - HTML 字符串。

描述

parse(String html) 方法将输入的 HTML 解析为新的 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

查看结果。

示例标题
示例内容

jsoup - 解析主体

以下示例将展示如何将 HTML 片段字符串解析为 Element 对象作为 html 正文。

句法

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

在哪里

  • document - 文档对象代表 HTML DOM。

  • Jsoup - 解析给定 HTML 字符串的主类。

  • html - HTML 片段字符串。

  • body - 表示文档主体元素的子元素,相当于 document.getElementsByTag("body")。

描述

parseBodyFragment(String html) 方法将输入的 HTML 解析为新的 Document。该文档对象可用于遍历并获取 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

查看结果。

示例内容

jsoup - 加载 URL

以下示例将展示使用 url 从网络获取 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

查看结果。

谷歌

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.htm");
      File input = new File(path.toURI());
      Document document = Jsoup.parse(input, "UTF-8");
      System.out.println(document.title());
   }
}

测试.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

查看结果。

示例标题

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 - Element 对象表示由 id“sampleDiv”标识的 html 节点元素。

  • links - Elements 对象表示由标签“a”标识的多个节点元素。

描述

parse(String html) 方法将输入的 HTML 解析为新的 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

查看结果。

示例标题
示例内容
数据:谷歌
参考文献:www.google.com
文字:谷歌

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 - 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

查看结果。

参考文献:www.google.com
文字:谷歌
名称: 谷歌
id:imageDiv
文本:样本

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 - 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

查看结果。

参考文献: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 - 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

查看结果。

文字:谷歌

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 - 文档对象代表 HTML DOM。

  • Jsoup - 解析给定 HTML 字符串的主类。

  • html - HTML 字符串。

  • link - Element 对象代表代表锚标记的 html 节点元素。

  • link.outerHtml() - externalHtml() 方法检索元素完整的 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

查看结果。

外部 HTML:<a href="www.google.com">Google</a>
内部 HTML:Google

jsoup - 使用 URL

下面的示例将展示可以提供 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 - 文档对象代表 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 elment,并提供获取 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

查看结果。

相关链接:index.htm
绝对链接:https://www.tutorialspoint.com/index.htm
绝对链接:https://www.tutorialspoint.com/index.htm

jsoup - 设置属性

下面的示例将展示如何使用方法来设置 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 - 文档对象代表 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

查看结果。

修改前的外部 HTML :<a id="googleA" href="www.google.com">Google</a>
修改后的外部 HTML :<a id="googleA" href="www.yahoo.com">Google</a>
---
修改前的外部 HTML :<div id="sampleDiv">
 <a id="googleA" href="www.yahoo.com">Google</a>
</div>
修改后的外部 HTML :<div id="sampleDiv">
 <a id="googleA" href="www.yahoo.com" class="header">Google</a>
</div>
---
修改前的外部 HTML :<div id="imageDiv" class="header">
 <img name="google" src="google.png">
 <img name="yahoo" src="yahoo.jpg">
</div>
修改后的外部 HTML :<div id="imageDiv" class="">
 <img name="google" src="google.png">
 <img name="yahoo" src="yahoo.jpg">
</div>
---
修改前的外部 HTML :<a href="www.sample1.com">Sample1</a>
<a href="www.sample2.com">示例2</a>
<a href="www.sample3.com">示例3</a>
修改前的外部 HTML :<a href="www.sample1.com" rel="nofollow">Sample1</a>
<a href="www.sample2.com" rel="nofollow">示例2</a>
<a href="www.sample3.com" rel="nofollow">示例3</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 - 文档对象代表 HTML DOM。

  • Jsoup - 解析给定 HTML 字符串的主类。

  • html - HTML 字符串。

  • div - 元素对象表示代表锚标记的 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

查看结果。

修改前的外部 HTML :
<div id="sampleDiv">
 <a id="googleA" href="www.google.com">Google</a>
</div>
修改后的外部 HTML :
<div id="sampleDiv">
 <p>这是示例内容。</p>
</div>
前置后:
<div id="sampleDiv">
 <p>初始文本</p>
 <p>这是示例内容。</p>
</div>
追加后:
<div id="sampleDiv">
 <p>初始文本</p>
 <p>这是示例内容。</p>
 <p>正文结束</p>
</div>
修改前的外部 HTML :
<span>示例内容</span>
修改后的外部 HTML :
<span>示例内容</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, 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>