Java HtmlParse提取标签中的值操作
更新时间:2020年08月19日 11:20:14 作者:Sandy林
这篇文章主要介绍了Java HtmlParse提取标签中的值操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
☆代码示例:
代码块语法遵循标准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; } }
以上这篇Java HtmlParse提取标签中的值操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
maven中springboot-maven-plugin的5种打包方式
本文主要介绍了maven中springboot-maven-plugin的5种打包方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-09-09IntelliJ IDEA2022.3 springboot 热部署含静态文件(最新推荐)
这篇文章主要介绍了IntelliJ IDEA2022.3 springboot 热部署含静态文件,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-01-01Spring事务管理下synchronized锁失效问题的解决方法
这篇文章主要给大家介绍了关于Spring事务管理下synchronized锁失效问题的解决方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Spring具有一定的参考学习价值,需要的朋友可以参考下2022-03-03一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件的详细教程
这篇文章主要介绍了一文搞懂并学会使用SpringBoot的Actuator运行状态监控组件,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-09-09
最新评论