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
投稿

猜你喜欢

  • SpringBoot jackson提供对LocalDate的支持方式

    2022-01-06 00:06:51
  • CentOS安装jdk的三种方法

    2022-01-13 06:24:41
  • C#中的引用类型以及特殊引用类型详解

    2023-06-18 01:43:46
  • 教你怎么在IDEA中创建java多模块项目

    2023-05-28 19:25:58
  • Java Comparable和Comparator对比详解

    2022-08-13 01:28:08
  • java 非常好用的反射框架Reflections介绍

    2022-11-25 01:25:52
  • Java将Exception信息转为String字符串的方法

    2022-12-01 08:39:35
  • 基于Java实现经典蜘蛛纸牌游戏

    2021-09-06 15:22:57
  • Java面试之动态规划与组合数

    2023-11-24 21:20:52
  • mybatis-plus 如何判断参数是否为空并作为查询条件

    2022-09-14 22:05:03
  • 举例解析Java的设计模式编程中里氏替换原则的意义

    2021-06-30 18:37:17
  • Android RecyclerView实现水平、垂直方向分割线

    2023-07-24 15:40:35
  • Java实现贪吃蛇大作战小游戏的示例代码

    2023-09-25 21:16:15
  • seata-1.4.0安装及在springcloud中使用详解

    2023-02-21 00:49:21
  • java实现列表、集合与数组之间转化的方法

    2023-11-29 10:17:38
  • JavaEE中struts2实现文件上传下载功能实例解析

    2023-03-09 07:54:31
  • JVM(Java虚拟机)简介(动力节点Java学院整理)

    2023-11-25 06:12:12
  • Java 获取两个List的交集和差集,以及应用场景操作

    2021-11-21 17:49:43
  • C#中is,as,using关键字的使用说明

    2023-07-01 22:54:42
  • iOS WebView中使用webp格式图片的方法

    2023-06-17 22:06:03
  • asp之家 软件编程 m.aspxhome.com