java基础之“在后端使用爬虫Jsoup工具根据标签id获取字符串中的标签html代码(java后端实现前端根据标签id获取标签对象)”
一.场景
在电商项目中产品描述时必不可少的存在,每个不同的项目所需的描述不同,不能一概而论
在产品的描述中的部分数据是我们所需要的,如价格,尺码表等
如何在不依靠前端的前提下,完成数据的提取就成了问题
二.思路
首先看产品描述的存储方式:我这边是直接整个以字符串存储在表字段中,
尽然是字符串,那我们就能使用Jsoup工具类来获取Document对象(也可以用其他的方案)
再用getElementById("标签id")方法获取标签对象
因为我这里是直接要标签对象(包括html标签)
所以我直接toString()既可,如果是要内部的内容,不要html标签,就用test()方法
三.需要获取的结果

三.代码
/**
* 功能描述: 实现在java中根据字符串中的标签id获取对应的标签对象
*
* @author 王子威
*/
@Test
public void extractChart()
{
// 产品描述:假数据
String desc = "<p align=\"center\"></p>\n" + "<p align=\"center\">啊啊啊啊</p>\n" + "<p align=\"center\"></p>\n" + "<p " + "align=\"center\">\n" + "</p>\n"
+ "<div id=\"sizechart-template1\">\n" + "<table " + "border=\"1\" style=\"width:800px;margin:10px auto;\">\n" + "<thead> <tr>\n" + "<td "
+ "style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;" + "\">Size</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;" + "text-align:center;\">Label Size</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;" + "font-family:Arial;padding:5px;text-align:center;\">Bust</td>\n" + "<td style=\"font-size"
+ ":11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Waist</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;" + "\">Length</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;" + "padding:5px;text-align:center;\">Height</td>\n" + "</tr>\n" + "</thead> <tbody>\n" + "<tr>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">100</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">56cm/22.0</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">23cm/9.1</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">11cm/4.3</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">36cm/14.2</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">36cm/14.2</td>\n" + "</tr>\n"
+ "<tr><td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">100</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">56cm/22.0</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">23cm/9.1</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">11cm/4.3</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">36cm/14.2</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">36cm/14.2</td>\n" + "</tr>\n" + "</tbody>\n" + "</table>\n"
+ "</div>\n" + "<br />\n" + "<br />\n" + "<div id=\"sizechart-template2\"><table border=\"1\" style=\"width:800px;margin:10px auto;\">\n" + "<tbody>\n" + "<tr>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Size:100</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Label Size:56cm/22.0</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Bust:23cm/9.1</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Waist:11cm/4.3</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Length:36cm/14.2</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Height:36cm/14.2</td>\n" + "</tr>\n" + "<tr>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Size:100</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Label Size:56cm/22.0</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Bust:23cm/9.1</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Waist:11cm/4.3</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Length:36cm/14.2</td>\n"
+ "<td style=\"font-size:11pt;font-weight:700;font-family:Arial;padding:5px;text-align:center;\">Height:36cm/14.2</td>\n" + "</tr>\n" + "</tbody>\n" + "</table>\n"
+ "</div>\n" + "<p></p>\n" + "<p align=\"center\"></p>\n" + "<p align=\"center\" style=\"text-align:left;\"></p>\n" + "<p align=\"center\"></p>\n"
+ "<p align=\"center\"><img src=\"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fup.enterdesk.com%2Fedpic%2F09%2F3a%2Fbc%2F093abce7b31f4c8ffdbf345375ff4abb.jpg&refer=http%3A%2F%2Fup.enterdesk.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1652421336&t=d2da9a6657364617cdcdbf0aa8e0002e\" /></p>\n"
+ "<p align=\"center\"></p>\n"
+ "<p align=\"center\"><p align=\"center\"><img src=\"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.jj20.com%2Fup%2Fallimg%2F1111%2F04261Q53521%2F1P426153521-1-1200.jpg&refer=http%3A%2F%2Fimg.jj20.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1652421677&t=05a703168ad75e76ce2bddf3b32382dd\" /></p>\n" + "</p>";
// 获取Document对象
Document doc = Jsoup.parse(desc); // 根据<div>标签中的id获取标签对象
Element elementById1 = doc.getElementById("sizechart-template1");
Element elementById2 = doc.getElementById("sizechart-template2");
// 标签转String
String a = elementById1.toString();
System.out.println("a = " + a);
String b = elementById2.toString();
System.out.println("b = " + b);
// 获取内容
String text = elementById1.text();
System.out.println("text = " + text);
}
结果
标签对象1

标签对象2

标签对象内容

java基础之“在后端使用爬虫Jsoup工具根据标签id获取字符串中的标签html代码(java后端实现前端根据标签id获取标签对象)”的更多相关文章
- Java基础进阶:APi使用,Math,Arrarys,Objects工具类,自动拆装箱,字符串与基本数据类型互转,递归算法源码,冒泡排序源码实现,快排实现源码,附重难点,代码实现源码,课堂笔记,课后扩展及答案
要点摘要 Math: 类中么有构造方法,内部方法是静态的,可以直接类名.方式调用 常用: Math.abs(int a):返回参数绝对值 Math.ceil(double a):返回大于或等于参数的最 ...
- java通过StringToKenizer获取字符串中的单词根据空格分离-简写版
public class StringToKenizer { public static void main(String[] args) { String strin = "Hello J ...
- java通过StringToKenizer获取字符串中的单词根据空格分离-详情版
public class DaXie { public static void main(String[] args) { String strin = "Hello Java World! ...
- Java基础学习总结(49)——Excel导入导出工具类
在项目的pom文件中引入 <dependency> <groupId>net.sourceforge.jexcelapi</groupId> <artifac ...
- java基础课程笔记 static 主函数 静态工具类 classpath java文档注释 静态代码块 对象初始化过程 设计模式 继承 子父类中的函数 继承中的构造函数 对象转型 多态 封装 抽象类 final 接口 包 jar包
Static那些事儿 Static关键字 被static修饰的变量成为静态变量(类变量) 作用:是一个修饰符,用于修饰成员(成员变量,成员方法) 1.被static修饰后的成员变量只有一份 2.当成员 ...
- 1231: 删除字符串中指定的字符(Java)
WUSTOJ 1231: 删除字符串中指定的字符 题目 原题链接 Description 明天就要英语考试了,小明明正在挑灯夜战背单词.小明明发现单词很难背,背一个忘一个.经过仔细研究,小明明发现单词 ...
- Java基础知识强化91:DateFormat类之DateFormat实现日期和字符串的相互转换
1. DateFormat类概述: DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间. 是抽象类,所以使用其子类SimpleDateFormat 2. ...
- JAVA基础-JDBC二(常用的开源工具)
一.连接池 在实际的开发应用中,我们常常会对数据库进行大量的高并发的访问,而最原始的连接和操作方式并不能满足这种大量的访问,程序员为了追求更方便.更快捷.更科学安全的开发.第三方的工具类和Dao层的框 ...
- java基础 数组 Set Map 集合综合应用 生成带0的随机字符串 "00000001" 水果商品号问题
package com.swift.test01; /*有四种水果(苹果,香蕉,西瓜,橘子) 1.给每种水果设定一个商品号,商品号是8个0-9的随机数,商品号码不能重复, 最小值 "0000 ...
- 【java基础学习二】 数组相互转换,转成用逗号隔开的字符串等
/** * int[],Integer[],List,List<Integer>,HashSet<Integer>相互转换,转成用逗号隔开的字符串 */ public stat ...
随机推荐
- IPTools for .NET:快速查询全球IP信息
IPTools 是一个用于快速查询全球 IP 地址信息的库,支持国内和国际 IP 查询,提供详细的地理位置信息(如国家.省份.城市)以及经纬度等数据. 1. IPTools.China IPTools ...
- mysql外部访问踩坑
起因 项目用.Net开发,在mac上运行,可能是版本问题,想试试在windows下部署,就用parallels起了个windows,但windows却无法连接宿主mac上的mysql,最后折腾了一天才 ...
- c# 对序列化类XMLSerializer 二次封装泛型化方便了一些使用的步骤
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/17270107.html 加工的泛型类如下: using System; using Syste ...
- vivo 大规模容器集群运维平台实践
作者:来自 vivo 互联网服务器团队- Zhou Qi .Kong Manyu 容器平台已经成为支持应用运维和部署的重要基础设施,当前 vivo 内部容器平台共有20+生产集群,管理数万物理机节点, ...
- Nginx: stat() failed (13: permission denied)
解决 server { listen [::]:80 default_server; # SSL configuration # # listen 443 ssl default_server; # ...
- Go 1.20更新了那些内容
PGO的引入 Go 1.20 发布了配置文件引导优化(PGO)的预览版,使编译器能够根据运行时配置文件信息,执行应用程序和工作负载的特定性优化.提供要构建的配置文件,使编译器能够将应用程序的速度提高大 ...
- 什么!你还不会写Vue组件,编写《功能级权限》匹配公式组件
说明 该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发). 该系统文章,我会尽量说的非常详细,做到不管新手.老手都能看懂. 说明:OverallAuth2 ...
- CSAPP学习笔记——chapter9 虚拟内存
CSAPP学习笔记--chapter9 虚拟内存 虚拟内存提供三个重要的功能.第一,它在主存中自动缓存最近使用的存放磁盘上的虚拟地址空间的内容.虚拟内存缓存中的块叫做页.对磁盘上页的引用会触发缺页,缺 ...
- Arrays工具类--java进阶day06
1.Arrays工具类 这些方法都是针对数组,并且都被static修饰,可以直接使用类名进行调用 1.toString 将数组拼接成带有相对应格式的字符串,可用于展示数组 2.equals 比较两个数 ...
- "油猴脚本""篡改猴"领域的一些基本常识
本文简要介绍本人对"油猴脚本","篡改猴"领域的一些见解,内容注定不可能一步到位和事无巨细,欢迎各位仁人志士对我批评指正,提出意见建议.另外转载前请务必注明作者 ...