基础工具之jsoup工具

说明

通过工具可以很方便的对html的全文进行解析,包括内容,元素,属性搜索和获取,可以通过级联元素和级联属性进行定位获取。

引入

maven引入

XML 复制代码
<dependency>
    <groupId>com.tfgee.mv</groupId>
    <artifactId>tbtools-common-box</artifactId>
    <version>0.0.2</version>
</dependency>

使用示例

java 复制代码
/**
 * 
 */
package com.tb.commonbox.JsoupHelper;

import java.util.List;

import org.apache.commons.collections.CollectionUtils;

import com.tb.commonbox.JsoupHelper.entity.TagInfo;
import com.tb.commonbox.log.TbToolsCommonLogFactory;
import com.tb.commonbox.log.impl.TbToolsCommonLogImpl;

/**
 * 
 * 2026年2月4日
 * Think
 */
public class Demo {
	
	final static TbToolsCommonLogImpl log = TbToolsCommonLogFactory.init().getT();

	public static void main(String[] args) {
		
		String content = "<body id=\"body\"> "
				+ "<ul class=\"ul1 cl\">"
				+ 	"<li>测试1</li>"
				+ 	"<li><a href=\"连接\">点击</a></li>"
				+ 	"<li><a href=\"连接12\">点击2</a></li>"
				+ "</ul> "
				+ "<ul class=\"ul2 cl\">"
				+ 	"<li>测试2<li>"
				+ 	"<li><a href=\"连接\">点击</a></li>"
				+ 	"<li><a href=\"连接22\">点击2</a></li>"
				+ "</ul> "
				+ "</body>";
		
		//根据id取内容
		String body = JsoupHelper.getContentById(content, "body");
		log.log(body);
		
		/**
		 * 示例1
		 */
		log.log(">>>>>>>>>>>>>>>示例1 ");
		TagInfo tagInfo = new TagInfo();
		tagInfo.setTagName("li");
		tagInfo.parent().setTagName("ul").addAttr("class", "ul1 cl");
		
		List<TagInfo> tagInfos = JsoupHelper.getContentByTag(content, tagInfo);
		if (CollectionUtils.isEmpty(tagInfos)) {
			log.error("未找到内容");
		}else {
			tagInfos.stream().forEach(x->{

				log.log("匹配标签:"+x.getTagName());
				log.log("匹配的包裹文本:"+x.getContent());
				
			});
		}
		
		/**
		 * 示例2
		 */
		log.log(">>>>>>>>>>>>>>>示例2 ");
		TagInfo tagInfo2 = new TagInfo();
		tagInfo2.setTagName("a").setContent("点击2");;
		tagInfo2.parent().setTagName("li");
		tagInfo2.parent().parent().setTagName("ul").addAttr("class", "ul2 cl");
		
		List<TagInfo> tagInfos2 = JsoupHelper.getContentByTag(content, tagInfo2);
		if (CollectionUtils.isEmpty(tagInfos2)) {
			log.error("未找到内容");
		}else {
			tagInfos2.stream().forEach(x->{

				log.log("匹配标签:"+x.getTagName());
				log.log("匹配的包裹文本:"+x.getContent());
				log.log("匹配标签的属性:"+x.getAttrs().get("href"));
			});
		}
	}
}

结果示例

log:<ul class="ul1 cl">

<li>测试1</li>

<li><a href="连接">点击</a></li>

<li><a href="连接12">点击2</a></li>

</ul>

<ul class="ul2 cl">

<li>测试2</li>

<li></li>

<li><a href="连接">点击</a></li>

<li><a href="连接22">点击2</a></li>

</ul>

log:>>>>>>>>>>>>>>>示例1

log:匹配标签:li

log:匹配的包裹文本:测试1

log:匹配标签:li

log:匹配的包裹文本:<a href="连接">点击</a>

log:匹配标签:li

log:匹配的包裹文本:<a href="连接12">点击2</a>

log:>>>>>>>>>>>>>>>示例2

log:匹配标签:a

log:匹配的包裹文本:点击2

log:匹配标签的属性:连接22

相关推荐
_codemonster3 小时前
JSP 、Thymeleaf 、 JavaScript 和Vue
java·javascript·vue.js
Devin~Y3 小时前
大厂Java面试实录:Spring Boot微服务 + Redis缓存 + Kafka消息队列 + Prometheus链路追踪 + RAG向量检索
java·spring boot·redis·spring cloud·kafka·rabbitmq·spring mvc
Oj92q85H53 小时前
如何在Dev-C++中设置TDM-GCC为默认编译器
java·jvm·c++
逸Y 仙X3 小时前
文章二:Elasticsearch跨集群能力探查
java·大数据·服务器·elasticsearch·搜索引擎·全文检索
阿标在干嘛3 小时前
政策快报如何让推荐准确率从8%提升到16%?画像系统实践
java·大数据·人工智能
Miss roro3 小时前
企业合同管理系统选型的核心维度:功能完整性、协作效率与安全合规
java·数据库·安全·法律科技
JAVA社区3 小时前
Java进阶全套教程(一)—— 数据框架Mybatis详解
java·开发语言·面试·职场和发展·mybatis
JAVA学习通4 小时前
《大营销平台系统设计实现》 - 营销服务 第10节:不超卖库存规则实现
java·数据库·oracle·责任链模式·codex
qq_2518364574 小时前
基于java 安卓-RSS阅读系统毕业论文
android·java·开发语言
lili00124 小时前
Gemini 3.5发布后的AI格局:谷歌重新定义行业标准
java·人工智能·python·ai编程