主页 > 人工智能  > 

Java获取html标签内容中的图片链接

Java获取html标签内容中的图片链接
Java获取html标签内容中的图片链接
一. 正则表达式 代码示例: private static final Pattern MATCH_IMAGE = Pattern pile("<img\\b[^>]*\\bsrc\\b\\s*=\\s*('|\")?([^'\"\n\r\f>]+(\\.jpg|\\.bmp|\\.eps|\\.gif|\\.mif|\\.miff|\\.png|\\.tif|\\.tiff|\\.svg|\\.wmf|\\.jpe|\\.jpeg|\\.dib|\\.ico|\\.tga|\\.cut|\\.pic|\\b)\\b)[^>]*>", Pattern.CASE_INSENSITIVE); /** * 获取html内容中的图片链接 * @param content html内容 * @return 图片urls链接 */ public List<String> getImageUrlsFromContentV1(String content) { List<String> resultList = new ArrayList<>(); if (StringUtils.isBlank(content)) { return resultList; } String htmlCode = content; Matcher m = MATCH_IMAGE.matcher(htmlCode); String quote = null; String src = null; while (m.find()) { quote = m.group(1); src = (quote == null || quote.trim().length() == 0) ? m.group(2).split("//s+")[0] : m.group(2); resultList.add(src); } return resultList; }
二. 使用Jsoup(推荐) (1)导入Jsoup依赖: <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.15.3</version> <!-- 自行选择版本 --> </dependency> (2)代码示例: /** * 获取html内容中的图片链接 * @param content html内容 * @return 图片urls链接 */ public List<String> getImageUrlsFromContentV2(String content) { List<String> resultList = new ArrayList<>(); if (StringUtils.isBlank(content)) { return resultList; } try { // 解析 HTML Document doc = Jsoup.parse(content); // 选择所有 img 标签 Elements imgElements = doc.select("img"); // 提取 for (Element img : imgElements) { String imgUrl = img.attr("src"); if (StringUtils.isBlank(imgUrl)) { continue; } resultList.add(imgUrl); } } catch (Exception e) { log.error("getImageUrlsFromContentV2 error: {} ", e.getMessage()); } return resultList; }
三. 两种方案对比

两种方案相比之下,Jsoup更具有优势:

1. 更准确的 HTML 解析

处理复杂 HTML:Jsoup 能够准确解析复杂的 HTML 结构,包括嵌套标签、不规范的 HTML 等。而正则表达式在处理复杂的 HTML 时可能会因为标签嵌套、不规范的格式等问题导致匹配失败。

容错性:Jsoup 对 HTML 的容错性很强,即使 HTML 代码不规范,也能正确解析。


2. 更直观的选择器语法

CSS 选择器: Jsoup 提供了类似于 CSS 的选择器语法,可以方便地选择 HTML 元素。例如,获取所有图片的链接可以使用 doc.select(“img[src]”)。这种语法简单直观,易于理解和维护。

正则表达式:正则表达式虽然功能强大,但在处理复杂 HTML 时,表达式可能会变得非常复杂,难以维护。


3. 性能优势

优化的解析引擎:Jsoup 的解析引擎经过优化,能够高效处理大型 HTML 文件。虽然在某些情况下,正则表达式的性能可能更高,但在处理复杂的 HTML 结构时,Jsoup 的性能通常更优。


4. 安全性

HTML 清理:Jsoup 在解析 HTML 时会自动清理不安全的内容,例如脚本标签。这有助于防止 XSS 攻击等安全问题。

正则表达式:正则表达式本身不提供 HTML 清理功能,使用时需要额外注意安全问题。

标签:

Java获取html标签内容中的图片链接由讯客互联人工智能栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Java获取html标签内容中的图片链接