Java HtmlParse提取标签中的值操作
作者:Sandy林 时间:2021-10-07 04:43:10
☆代码示例:
代码块语法遵循标准markdown代码,例如:
package cas;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.StringFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.util.NodeList;
/**
* Html 中的body体中提取出Img标签中的src值
*
* @author XY
*
*/
public class CASHtmlImgConvert {
public static void main(String[] args) {
//演示
String[] oldSrcPath=changeImgSrc("<img alt=\"\" src=\"http://www.czb8688.com/attached/image/20160116/20160116141455_775.jpg\" />");
if(oldSrcPath!=null){
for(String str:oldSrcPath){
System.out.println(str);
}
}
}
public static boolean isEmpty(String str){
if(str!=null&&(!str.equals("")))
return false;
else
return true;
}
/**
*
* @param htmlPath 本地的html路径 或者body
*/
private static String[] changeImgSrc(String htmlPath)
{ StringBuilder oldSrcPath = new StringBuilder();
try {
Parser parser = new Parser(htmlPath);
//标签名过滤器
NodeFilter filter = new TagNameFilter ("img");
NodeList nodes = parser.extractAllNodesThatMatch(filter);
Node eachNode = null;
ImageTag imageTag = null;
if (nodes != null)
{
// 遍历所有的img节点
for (int i = 0; i < nodes.size(); i++)
{
eachNode = (Node)nodes.elementAt(i);
if (eachNode instanceof ImageTag)
{
imageTag = (ImageTag)eachNode;
// 获得html文本的原来的src属性
String path=imageTag.getAttribute("src");
if(path.startsWith(""))
path="http://www.czb8688.com"+path;
oldSrcPath .append(path+",");
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
String str=oldSrcPath.toString();
//返回图片数组
return str.substring(0,str.length()-1).split(",");
}
}
补充知识:java 扫描HTML 拿取各种标签资源数据
直接上代码,不比比。
package com.zhirui.oa.modules.notice.utils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class TemplateUtil {
public static List<Map<String, Object>> getImgSrc(String htmlContent) {
List<Map<String, Object>> srcList = new ArrayList<>(); //用来存储获取到的地址
Map<String, Object> map = null;
Pattern p = Pattern.compile("<(img|IMG)(.*?)(>|></img>|/>)");//匹配字符串中的img标签
Matcher matcher = p.matcher(htmlContent);
boolean hasPic = matcher.find();
if (hasPic == true)//判断是否含有图片
{
while (hasPic) //如果含有图片,那么持续进行查找,直到匹配不到
{
String group = matcher.group(2);//获取第二个分组的内容,也就是 (.*?)匹配到的
Pattern srcText = Pattern.compile("(src|SRC)=(\"|\')(.*?)(\"|\')");//匹配图片的地址
Matcher matcher2 = srcText.matcher(group);
if (matcher2.find()) {
map = new HashMap<>();
map.put("imgResourcePath", matcher2.group(3));
srcList.add(map);//把获取到的图片地址添加到列表中
map = null;
}
hasPic = matcher.find();//判断是否还有img标签
}
}
return srcList;
}
public static List<Map<String, Object>> getVideoSrc(String htmlContent) {
List<Map<String, Object>> srcList = new ArrayList<>(); //用来存储获取到的视频地址
Map<String, Object> map = null;
Pattern p = Pattern.compile("<(video|VIDEO)(.*?)(>|></video>|/>)");//匹配字符串中的video标签
Matcher matcher = p.matcher(htmlContent);
boolean hasPic = matcher.find();
if (hasPic == true)//判断是否含有视频
{
while (hasPic) //如果含有视频,那么持续进行查找,直到匹配不到
{
String group = matcher.group(2);//获取第二个分组的内容,也就是 (.*?)匹配到的
Pattern srcText = Pattern.compile("(src|SRC)=(\"|\')(.*?)(\"|\')");//匹配视频的地址
Matcher matcher2 = srcText.matcher(group);
if (matcher2.find()) {
map = new HashMap<>();
map.put("videoResourcePath", matcher2.group(3));
srcList.add(map);//把获取到的视频地址添加到列表中
map = null;
}
hasPic = matcher.find();//判断是否还有video标签
}
}
return srcList;
}
public static List<Map<String, Object>> getAhref(String htmlContent) {
List<Map<String, Object>> srcList = new ArrayList<>(); //用来存储获取到的超链接地址
Map<String, Object> map = null;
Pattern p = Pattern.compile("<(a|A)(.*?)(>|></a>|/>)");//匹配字符串中的a标签
Matcher matcher = p.matcher(htmlContent);
boolean hasPic = matcher.find();
if (hasPic == true)//判断是否含有超链接
{
while (hasPic) //如果含有超链接,那么持续进行查找,直到匹配不到
{
String group = matcher.group(2);//获取第二个分组的内容,也就是 (.*?)匹配到的
Pattern srcText = Pattern.compile("(href|HREF)=(\"|\')(.*?)(\"|\')");//匹配超链接的地址
Matcher matcher2 = srcText.matcher(group);
if (matcher2.find()) {
map = new HashMap<>();
map.put("aResourcePath", matcher2.group(3));
srcList.add(map);//把获取到的超链接地址添加到列表中
map = null;
}
hasPic = matcher.find();//判断是否还有a标签
}
}
return srcList;
}
}
来源:https://blog.csdn.net/u013334392/article/details/53490661
标签:Java,HtmlParse,标签值
0
投稿
猜你喜欢
Java的Hibernate框架中Criteria查询使用的实例讲解
2023-08-22 23:25:47
GraalVM native-image编译后quarkus的超音速启动
2022-08-09 01:17:27
Java利用反射对list对象做过滤
2023-12-23 07:39:17
Java打印出所有的水仙花数的实现代码
2023-03-06 17:24:22
C#多线程之Thread中Thread.Join()函数用法分析
2022-01-20 14:47:58
详解SpringBoot+Mybatis实现动态数据源切换
2022-06-04 02:42:02
Java实现常用缓存淘汰算法:FIFO、LRU、LFU
2022-08-26 21:45:19
零基础写Java知乎爬虫之获取知乎编辑推荐内容
2023-11-29 04:33:39
C# 对文件与文件夹的操作包括删除、移动与复制
2023-11-16 07:20:46
Android中解决页签手指按下从左到右滑动的bug
2021-06-04 19:22:40
Android Flutter自适应瀑布流案例详解
2023-05-31 17:44:21
深入分析C# 线程同步
2023-05-09 00:49:44
Java实现多线程断点下载实例代码(下载过程中可以暂停)
2021-06-09 18:02:41
C# 拷贝数组的几种方法(总结)
2023-09-14 06:50:17
jsp、struts、spring、mybatis实现前端页面功能模块化拆分的方案
2023-11-25 07:38:00
java 查找替换pdf中的指定文本
2022-08-17 14:04:46
详解Android的内存优化--LruCache
2022-07-18 14:28:41
android 判断网络是否可用与连接的网络是否能上网
2021-10-08 02:04:34
java控制台打印本月的日历
2023-10-15 22:58:12
在Spring Boot中加载初始化数据的实现
2023-08-18 10:01:44