- Jsoup 教程
- jsoup - 首页
- jsoup - 概述
- jsoup - 环境设置
- 示例 - 输入
- jsoup - 解析字符串
- jsoup - 解析正文
- jsoup - 加载URL
- jsoup - 加载文件
- 示例 - 提取数据
- jsoup - 使用DOM方法
- jsoup - 使用选择器语法
- jsoup - 提取属性
- jsoup - 提取文本
- jsoup - 提取HTML
- jsoup - 处理URL
- 示例 - 修改数据
- jsoup - 设置属性
- jsoup - 设置HTML
- jsoup - 设置文本内容
- 示例 - 清理HTML
- jsoup - 清理HTML
- jsoup 有用资源
- jsoup 快速指南
- jsoup - 有用资源
- jsoup - 讨论
jsoup 快速指南
jsoup - 概述
jsoup 是一个基于 Java 的库,用于处理基于 HTML 的内容。它提供了一个非常方便的 API 来提取和操作数据,并结合了 DOM、CSS 和类似 jQuery 的方法的优势。它实现了 WHATWG HTML5 规范,并像现代浏览器一样将 HTML 解析为相同的 DOM。
jsoup 库实现了 WHATWG HTML5 规范,并将 HTML 内容解析为与现代浏览器相同的 DOM。
jsonp 库提供以下功能。
多重读取支持 - 它使用 URL、文件或字符串读取和解析 HTML。
CSS 选择器 - 它可以使用 DOM 遍历或 CSS 选择器查找和提取数据。
DOM 操作 - 它可以操作 HTML 元素、属性和文本。
防止 XSS 攻击 - 它可以根据给定的安全白名单清理用户提交的内容,以防止 XSS 攻击。
整理 - 它输出整洁的 HTML。
处理无效数据 - 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
查看结果。
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.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 - 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.com/"; Document document = Jsoup.connect(url).get(); Element link = document.select("a").first(); System.out.println("Relative Link: " + link.attr("href")); System.out.println("Absolute Link: " + link.attr("abs:href")); System.out.println("Absolute Link: " + link.absUrl("href")); } }
验证结果
使用**javac**编译器编译类,如下所示
C:\jsoup>javac JsoupTester.java
现在运行 JsoupTester 以查看结果。
C:\jsoup>java JsoupTester
查看结果。
Relative Link: index.htm Absolute Link: https://tutorialspoint.com/index.htm Absolute Link: https://tutorialspoint.com/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>