Java HtmlParse提取標籤中的值操作
阿新 • • 發佈:2020-08-20
☆程式碼示例:
程式碼塊語法遵循標準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提取標籤中的值操作就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。