基础工具之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

相关推荐
衍生星球11 小时前
【Java 语言】— 面向对象:构造方法(无参、有参构造)
java·开发语言
SimonKing11 小时前
素笺( local-notes)全面优化,新增功能体验不一样的笔记
java·后端·程序员
techpupil11 小时前
IDEA基础配置及开发基础插件
java·ide·intellij-idea
yuniko-n11 小时前
【JVM】对象内存布局
java·开发语言·jvm
CoderYanger11 小时前
Java EE 进阶:6.SpringBoot 配置文件(第二弹)
java·spring boot·spring·面试·职场和发展·java-ee·程序员创富
文丑颜不良啊11 小时前
LeetCode1681~1700题目解析
java·leetcode
愚农搬码11 小时前
电子表单、动态表单、表单设计器和表单引擎到底有什么区别?
java·后端
CarIise11 小时前
Spring 框架AOP与 XML 基础
java·开发语言
m0_6399069411 小时前
SpringBoot 实现大模型统一调度网关|对接 OpenAI、Claude 协议差异与适配方案
java·spring boot·spring
雪芽蓝域zzs11 小时前
第 1 章:IDEA 全局配置 Maven + 新建 SpringBoot3 Maven 项目
java·maven·intellij-idea