Jsoup Example
创作时间:
作者:
@小白创作中心
Jsoup Example
引用
CSDN
1.
https://m.blog.csdn.net/lishangke/article/details/144244449
在现代Java开发中,处理HTML数据是一项常见需求,无论是抓取网页数据、解析HTML文档,还是操作DOM树,Jsoup都是一个强大的工具。它是一个基于Java的HTML解析库,支持从URL、文件或字符串中解析HTML,提供类似于jQuery的API,便于选择和操作DOM元素。本文将介绍Jsoup的基本功能,并通过多个详细的代码示例展示如何使用它解析和操作HTML。
为什么选择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.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();
}
}
}
使用场景
- Web抓取:提取网页内容,如标题、段落、链接等。
- HTML清洗:清理和格式化用户生成的HTML。
- 表单提交:模拟用户登录或提交数据。
- DOM操作:解析和修改HTML文件。
- 数据提取:从HTML表格中提取结构化数据。
总结
Jsoup是处理HTML的强大工具,具备快速抓取、解析和操作HTML的能力,适合多种应用场景。
常见的优点:
- 使用简单,学习成本低。
- 功能强大,支持多种HTML操作。
- 兼容性强,能处理各种HTML格式。
常见的缺点:
- 仅支持单线程操作,抓取效率有限。
- 对于动态加载的网页(如AJAX),需要结合其他工具使用。
通过本文的介绍和示例,希望您能快速上手Jsoup并应用到实际项目中。
热门推荐
国债逆回购亏损原因及应对策略
国债逆回购实际占款天数如何计算
网络安全新纪元:提高个人防范意识的全面指南
童年回忆,蓝精灵65周年特展走进广州CBD
东北自驾游详细攻略(5大自驾游线路,附高清地图,含行程、住宿地规划)
敏感肌适用的天然手工肥皂推荐与评价
系统软件与应用软件:功能差异与协同作用
个人档案查询线下渠道有哪些
低蛋白血症的营养治疗
哈利波特的MBTI类型分析及赫奇帕奇代表人物特点
企业必读:宣传片制作常见的5大认知误区与避坑指南
殖民、西方知识与教育改革:一场深刻的社会变革如何发生的
2024年石家庄铁道大学四方学院录取分数线是多少 各省最低分数线及位次
易经乾卦第一爻:潜龙勿用的智慧
清华“水木年花”支队探路广州绿电绿证市场,助力“双碳”目标落地
路旁土缺什么五行缺土怎么办
intj型人格和哪种人格匹配 intj型人格和什么人格合得来
纯物理规律驱动的化学反应:碳链增长的新方式
四世三公的汝南袁氏,到底凭什么能影响汉末大乱局?
2024 雨果奖揭晓:《不顾一切的荣耀》获最佳长篇科幻小说奖
社保卡注销流程是什么?社保能退吗
山东大学法学实力排名全国前30,B+评价居省内首位
人工智能与机器学习在图像处理中的融合与应用
2025山东公务员结构化面试备考:如何应对突发事件
心灵的疗愈之旅:了解精神康复科的治疗方法和成效
苄星青霉素小孩使用指导说明
电动汽车电池寿命影响因素
陕西榆林:打造宜居城市 焕发城市魅力
16个保证有效的「瘦身方法」!不用挨饿、专家认证可持续性减脂的快速瘦身方法
第五人格喧嚣怎么溜 溜喧嚣方法