java 获取html字符串中的img标签src

/**
 * 获取img标签的src
 * */
public static String getImgSrc(String content){

    List<String> list = new ArrayList<String>();
    //目前img标签标示有3种表达式
    //<img alt="" src="1.jpg"/>   <img alt="" src="1.jpg"></img>     <img alt="" src="1.jpg">
    //开始匹配content中的<img />标签
    Pattern p_img = Pattern.compile("<(img|IMG)(.*?)(/>|></img>|>)");
    Matcher m_img = p_img.matcher(content);
    boolean result_img = m_img.find();
    if (result_img) {
        while (result_img) {
            //获取到匹配的<img />标签中的内容
            String str_img = m_img.group(2);

            //开始匹配<img />标签中的src
            Pattern p_src = Pattern.compile("(src|SRC)=(\"|\')(.*?)(\"|\')");
            Matcher m_src = p_src.matcher(str_img);
            if (m_src.find()) {
                String str_src = m_src.group(3);
                list.add(str_src);
            }
            //结束匹配<img />标签中的src

            //匹配content中是否存在下一个<img />标签,有则继续以上步骤匹配<img />标签中的src
            result_img = m_img.find();
        }
    }
    //去掉静态表情图和编辑器表情图片
    List<String> srcstemp=new ArrayList<>();
    for(String imageSrc:list){
        if(!imageSrc.contains("/static") && !imageSrc.contains("/emotion")){
            srcstemp.add(imageSrc);
        }
    }
    list=srcstemp;
    if(list.size()>0){
        return list.get(0);
    }else{
        return null;
    }
}

 

 

 

private static List<String> getImageSrcList(String html, int length,HttpServletRequest request) {
    String imageURL= ApplicationUtil.getSiteConfigBean().getNewImagePath(request);
    ArrayList<String> list = new ArrayList<>();
    ArrayList<Integer> srcIndexList= new ArrayList<>();
    if (html != null && html.length() != 0) {
        //提取图片
        String patternString = "<img\\b[^<>]*?\\bsrc[\\s]*=[\\s|\'|\"]*([^\\s|\'|\"]*)[\\s|\'|\"]*";
        Pattern patten = Pattern.compile(patternString);
        Matcher m = patten.matcher(html);
        while (m.find()) {
            try {
                String src = m.group(1);
                System.out.println(src);
                //如果是gif则不缩略
                if("gif".equalsIgnoreCase(src.substring(src.lastIndexOf('.')+1,src.length()))
                        ||  src.startsWith("/static")){
                    list.add(src);
                    //记录排序位置
                    int srcIndex=html.indexOf(m.group(1));
                    srcIndexList.add(srcIndex);
                }else{
                    list.add(getShortImage(src));
                    int srcIndex=html.indexOf(m.group(1));
                    srcIndexList.add(srcIndex);
                }
                if (list.size() >= length && length > 0) {
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        //提取视频截图
        patternString = "<embed\\b[^<>]*?\\bimgsrc[\\s]*=[\\s|\'|\"]*([^\\s|\'|\"]*)[\\s|\'|\"]*";
        patten = Pattern.compile(patternString);
        m = patten.matcher(html);
        while (m.find()) {
            try {
                String src = "video_"+imageURL+m.group(1);
                System.out.println(src);
                list.add(src);
                int srcIndex=html.indexOf(m.group(1));
                srcIndexList.add(srcIndex);
                if (list.size() >= length && length > 0) {
                    break;
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    //缩略图排序
    ArrayList<String> result = new ArrayList<>();
    int total=srcIndexList.size();
    do{
        if(total>0){
            //获取最小值索引
            int index=srcIndexList.indexOf(Collections.min(srcIndexList));
            result.add(list.get(index));
            srcIndexList.remove(index);
            list.remove(index);
            total=srcIndexList.size();
        }
    }while (total>0);

    return result;
}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值