- 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 libary 实现 WHATWG HTML5 规范,并将 HTML 内容解析为与现代浏览器相同的 DOM。
jsonp 库提供以下功能。
多重读取支持- 它使用 URL、文件或字符串读取和解析 HTML。
CSS 选择器它可以使用 DOM 遍历或 CSS 选择器来查找和提取数据。
DOM 操作它可以操作 HTML 元素、属性和文本。
防止XSS攻击它可以根据给定的安全白名单清理用户提交的内容,以防止XSS攻击。
Tidy它输出整洁的 HTML。
处理无效数据- 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>