Java利用Jsoup解析和操作HTML的技术指南
作者:拾荒的小海螺
在现代 Java 开发中,处理 HTML 数据是一项常见需求,无论是抓取网页数据、解析 HTML 文档,还是操作 DOM 树,Jsoup 都是一个强大的工具,本文将介绍 Jsoup 的基本功能,并通过多个详细的代码示例展示如何使用它解析和操作 HTML,需要的朋友可以参考下
1、简述
在现代 Java 开发中,处理 HTML 数据是一项常见需求,无论是抓取网页数据、解析 HTML 文档,还是操作 DOM 树,Jsoup 都是一个强大的工具。它是一个基于 Java 的 HTML 解析库,支持从 URL、文件或字符串中解析 HTML,提供类似于 jQuery 的 API,便于选择和操作 DOM 元素。
本文将介绍 Jsoup 的基本功能,并通过多个详细的代码示例展示如何使用它解析和操作 HTML。
2、为什么选择 Jsoup?
- 简单易用:API 设计友好,功能丰富。
- 强大的选择器:支持 CSS 选择器和 DOM 遍历。
- 灵活的 HTML 操作:可以轻松修改 HTML。
- 兼容性强:支持解析 HTML5 和宽松的 HTML。
- 高效:可以从 URL 快速抓取内容。
在使用 Jsoup之前,需要添加其依赖。以下是 Jsoup 的 Maven 依赖:
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.4</version> </dependency>
3、基本使用方法
Spring Boot 集成 Jsoup,以下示例将演示如何使用 Jsoup 解析 HTML 文件和操作 DOM。
3.1 从 URL 抓取网页内容
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JsoupFromUrl { public static void main(String[] args) { try { // 从 URL 抓取网页内容 Document document = Jsoup.connect("https://lsk-ww.cn").get(); // 输出网页标题 System.out.println("Title: " + document.title()); // 输出网页的第一段文字 System.out.println("First Paragraph: " + document.select("p").first().text()); } catch (Exception e) { e.printStackTrace(); } } }
3.2 从字符串解析 HTML
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JsoupFromString { public static void main(String[] args) { String html = "<html><head><title>Jsoup Example</title></head>" + "<body><p>Hello, Jsoup!</p></body></html>"; // 解析 HTML 字符串 Document document = Jsoup.parse(html); // 输出标题和段落内容 System.out.println("Title: " + document.title()); System.out.println("Body Text: " + document.body().text()); } }
3.3 使用 CSS 选择器提取内容
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements; public class JsoupCssSelector { public static void main(String[] args) { String html = "<html><body>" + "<div class='content'><h1>Header</h1><p>Paragraph 1</p></div>" + "<div class='footer'><p>Footer Paragraph</p></div>" + "</body></html>"; // 解析 HTML Document document = Jsoup.parse(html); // 使用 CSS 选择器提取内容 Elements content = document.select(".content h1"); System.out.println("Header: " + content.text()); Elements footer = document.select(".footer p"); System.out.println("Footer: " + footer.text()); } }
3.4 修改 HTML 内容
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JsoupModifyHtml { public static void main(String[] args) { String html = "<html><body><p>Original Paragraph</p></body></html>"; // 解析 HTML Document document = Jsoup.parse(html); // 修改段落内容 document.select("p").first().text("Updated Paragraph"); // 输出修改后的 HTML System.out.println(document.html()); } }
3.5 提取网页中的链接和图片
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; public class JsoupExtractLinks { public static void main(String[] args) { String html = "<html><body>" + "<a href='https://example.com'>Example</a>" + "<img src='image.jpg' alt='Example Image'>" + "</body></html>"; // 解析 HTML Document document = Jsoup.parse(html); // 提取链接 Elements links = document.select("a[href]"); for (Element link : links) { System.out.println("Link: " + link.attr("href") + " Text: " + link.text()); } // 提取图片 Elements images = document.select("img[src]"); for (Element image : images) { System.out.println("Image: " + image.attr("src") + " Alt: " + image.attr("alt")); } } }
3.6 处理表单数据
import org.jsoup.Connection; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; public class JsoupFormExample { public static void main(String[] args) { try { // 提交表单 Connection.Response response = Jsoup.connect("https://example.com/login") .data("username", "user123") .data("password", "pass123") .method(Connection.Method.POST) .execute(); // 获取响应的 HTML Document document = response.parse(); System.out.println("Response: " + document.body().text()); } catch (Exception e) { e.printStackTrace(); } } }
4、使用场景
- Web 抓取:提取网页内容,如标题、段落、链接等。
- HTML 清洗:清理和格式化用户生成的 HTML。
- 表单提交:模拟用户登录或提交数据。
- DOM 操作:解析和修改 HTML 文件。
- 数据提取:从 HTML 表格中提取结构化数据。
5、总结
Jsoup 是处理 HTML 的强大工具,具备快速抓取、解析和操作 HTML 的能力,适合多种应用场景。
常见的优点:
- 使用简单,学习成本低。
- 功能强大,支持多种 HTML 操作。
- 兼容性强,能处理各种 HTML 格式。
常见的缺点:
- 仅支持单线程操作,抓取效率有限。
- 对于动态加载的网页(如 AJAX),需要结合其他工具使用。
以上就是Java利用Jsoup解析和操作HTML的技术指南的详细内容,更多关于Java Jsoup解析和操作HTML的资料请关注脚本之家其它相关文章!