用Java解析HTML
如果您正在开发一个处理 HTML 文件的程序,您可能需要找到一种有效解析 HTML 文件的方法。 您可以使用最常用的网页抓取工具 Jsoup 通过 Java 编程语言快速解析 HTML 文件。
本文讨论如何解析 HTML 文件。 此外,我们将通过提供必要的示例和解释来讨论该主题,以使该主题更容易。
Jsoup 在 Java 中的工作
Jsoup 的工作原理是解析网页的 HTML 文件,然后将其转换为 Document 对象。 您可以将其视为 DOM 的编程表示。
Jsoup 中名为 parse 的方法创建文档。 下面讨论 Jsoup 的一些功能:
- parse(File MyFile, @Nullable String charsetName) - 用于解析 HTML 文件。
- parse(InputStream in, @Nullable String CharsetName, String BaseUri) - 读取 InputStream 并解析它。
- parse(String html) - 用于解析 HTML 字符串。
Java中使用Jsoup解析HTML
我们下面的示例将使用 Jsoup 解析网站。 我们示例的 Java 代码如下:
// importing necessary packages
package javaparsehtml;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JavaParseHtml {
public static void main(String[] args) {
URL MyUrl;
try {
// Providing the URL of the website
MyUrl = new URL("https://www.example.com");
HttpURLConnection MyConnection;
try {
// Create an Http connection
MyConnection = (HttpURLConnection) MyUrl.openConnection();
// Defining the request format
MyConnection.setRequestProperty("accept", "application/json");
try {
// Create a response stream
InputStream ResponseStream = MyConnection.getInputStream();
// Parsing the website
Document MyDoc = Jsoup.parse(ResponseStream,
"UTF-8", "https://www.example.com");
// Showing the output as HTML
System.out.println(MyDoc.html());
} catch (IOException e) {
e.printStackTrace();
}
} catch (IOException e) {
e.printStackTrace();
}
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
在上面的示例中,我们将说明如何解析 HTML 文件,并且我们已经掌握了每一行的用途。
在示例中,我们根据提供的 URL 创建了一个 HTTP 连接,然后定义了请求的属性。 之后,我们创建了一个InputStream并解析了网站。
最后,我们将网站打印为输出。 执行上述 Java 程序后,您将得到如下输出:
<!doctype html>
<html>
<head>
<title>Example Domain</title>
<meta charset="utf-8">
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<style type="text/css">
body {
background-color: #f0f0f2;
margin: 0;
padding: 0;
font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
}
div {
width: 600px;
margin: 5em auto;
padding: 2em;
background-color: #fdfdff;
border-radius: 0.5em;
box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);
}
a:link, a:visited {
color: #38488f;
text-decoration: none;
}
@media (max-width: 700px) {
div {
margin: 0 auto;
width: auto;
}
}
</style>
</head>
<body>
<div>
<h1>Example Domain</h1>
<p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p>
<p><a href="https://www.iana.org/domains/example">More information...</a></p>
</div>
</body>
</html>
这里需要注意的是,如果你还没有安装或包含Jsoup的jar文件,你首先需要在你的项目目录中包含jar文件或安装包。 否则,您可能会收到错误。
相关文章
如何在 Java 中延迟几秒钟的时间
发布时间:2023/12/17 浏览次数:217 分类:Java
-
本篇文章主要介绍如何在 Java 中制造程序延迟。本教程介绍了如何在 Java 中制造程序延时,并列举了一些示例代码来了解它。
如何在 Java 中把 Hashmap 转换为 JSON 对象
发布时间:2023/12/17 浏览次数:187 分类:Java
-
它描述了允许我们将哈希图转换为简单的 JSON 对象的方法。本文介绍了在 Java 中把 Hashmap 转换为 JSON 对象的方法。我们将看到关于创建一个 hashmap,然后将其转换为 JSON 对象的详细例子。
如何在 Java 中按值排序 Map
发布时间:2023/12/17 浏览次数:171 分类:Java
-
本文介绍了如何在 Java 中按值对 Map 进行排序。本教程介绍了如何在 Java 中按值对 Map
进行排序,并列出了一些示例代码来理解它。
如何在 Java 中打印 HashMap
发布时间:2023/12/17 浏览次数:192 分类:Java
-
本帖介绍了如何在 Java 中打印 HashMap。本教程介绍了如何在 Java 中打印 HashMap 元素,还列举了一些示例代码来理解这个主题。
在 Java 中更新 Hashmap 的值
发布时间:2023/12/17 浏览次数:146 分类:Java
-
本文介绍了如何在 Java 中更新 HashMap 中的一个值。本文介绍了如何在 Java 中使用 HashMap 类中包含的两个方法-put() 和 replace() 更新 HashMap 中的值。
Java 中的 hashmap 和 map 之间的区别
发布时间:2023/12/17 浏览次数:79 分类:Java
-
本文介绍了 Java 中的 hashmap 和 map 接口之间的区别。本教程介绍了 Java 中 Map 和 HashMap 之间的主要区别。在 Java 中,Map 是用于以键值对存储数据的接口,
在 Java 中获取用户主目录
发布时间:2023/12/17 浏览次数:218 分类:Java
-
这篇文章向你展示了如何在 Java 中获取用户主目录。本教程介绍了如何在 Java 中获取用户主目录,并列出了一些示例代码以指导你完成该主题。
Java 中 size 和 length 的区别
发布时间:2023/12/17 浏览次数:179 分类:Java
-
这篇文章教你如何知道 Java 中大小和长度之间的区别。本教程介绍了 Java 中大小和长度之间的区别。我们还列出了一些示例代码以帮助你理解该主题。
Java 中的互斥锁
发布时间:2023/12/17 浏览次数:111 分类:Java
-
了解有关 Java 中互斥锁的一切,在计算机科学领域,互斥或互斥被称为并发控制的属性。每台计算机都使用称为线程的最小程序指令序列。有一次,计算机在一个线程上工作。为了更好地理解,