jsoup:Java HTML解析器
用类似jQuery的简洁语法在Java中抓取、清理和操作HTML
什么是jsoup?
jsoup是一款轻量级但功能强大的Java库,专为处理真实HTML而设计。它提供流畅的API,可以从URL、文件或字符串解析HTML,使用DOM遍历、CSS选择器和现代HTML5方法提取和操作数据。非常适合网页抓取、数据提取和HTML净化,jsoup能像浏览器一样优雅处理不规范标记。
与原始正则表达式方法不同,jsoup提供简洁的对象模型和jQuery风格的方法,简化表单提交、属性修改和文本提取等任务。无依赖且采用MIT许可,是Java开发者处理HTML的首选工具。
jsoup核心优势:
- 真实HTML处理:像浏览器一样解析混乱的HTML
- jQuery式语法:熟悉的CSS选择器(如
doc.select("div.content")
) - 抓取友好:自动处理重定向、Cookies和表单提交
- 跨平台:纯Java实现,无原生依赖
- 安全性:内置XSS防护和HTML净化
完美适用于数据挖掘、网页自动化和内容分析。
为什么选择jsoup?
- 简单易用:直观API支持CSS选择器
- 稳定可靠:自2009年持续维护
- 高效性能:针对流式和大文档优化
- 灵活适配:支持片段、文件或实时URL
- 整洁输出:美观排版和重新格式化HTML
安装指南
通过Maven或Gradle添加jsoup:
Maven
org.jsoup
jsoup
1.17.2
Gradle
implementation 'org.jsoup:jsoup:1.17.2'
系统要求: Java 8+
代码示例
jsoup实际应用场景:
示例1:从字符串解析文档
当Java字符串包含HTML时,用几行代码即可解析内容或进行修改:
parse(String html, String baseUri)
方法将输入HTML转为新文档。baseUri
参数用于解析相对URL为绝对地址,应与文档来源URL一致。若不相关或HTML包含<base>
元素,可用简化版parse(String html)
方法。
示例2:使用CSS选择器查找元素
用CSS选择器直接查找和操作HTML元素:
示例3:修改元素HTML
修改元素HTML内容(示例代码展示Element的HTML设置方法):
高级功能
jsoup专业级HTML处理能力:
- 表单处理:提交POST数据:
表单提交
Connection.Response res = Jsoup.connect("https://example.com/login") .data("username", "user", "password", "pass") .method(Connection.Method.POST) .execute(); Document dashboard = res.parse();
- 代理支持:通过代理抓取:
代理配置
Document doc = Jsoup.connect("https://target.com") .proxy("127.0.0.1", 8080) .get();
- DOM操作:修改HTML结构:
DOM修改
doc.select("div.ads").remove(); // 移除所有广告 doc.select("h1").attr("class", "header"); // 添加CSS类
jsoup对比HTMLUnit
核心差异:
- 定位:jsoup解析静态HTML;HTMLUnit模拟浏览器(执行JavaScript)
- 速度:jsoup纯HTML解析更快
- API风格:jsoup用CSS选择器;HTMLUnit模仿Selenium
- 适用场景:jsoup适合抓取;HTMLUnit适合动态页面测试
- 依赖:jsoup零依赖;HTMLUnit需额外库
总结
jsoup是Java开发者的终极HTML工具包,特别适用于:
- 网页抓取:从任意网站提取数据
- 数据清洗:净化和标准化HTML
- 内容分析:解析RSS订阅或网页存档
- 测试验证:检查应用中的HTML结构
凭借MIT许可和直观API,jsoup是Java处理HTML的最佳选择。