使用Jsoup提取HTML元素style属性内background-image的urlImage值
实现代码
你可以通过正则匹配完成需求,先移除style内容里的CSS注释,再提取目标属性:
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import java.util.regex.Matcher; import java.util.regex.Pattern; public class ExtractImageUrl { public static void main(String[] args) throws Exception { String url = "你的目标页面地址"; Document document = Jsoup.connect(url).get(); for (Element element: document.select(".photo_wrap")) { String style = element.attr("style"); // 移除所有/* */格式的CSS注释 String noCommentStyle = style.replaceAll("/\\*.*?\\*/", "").trim(); // 匹配background-image配置项 Pattern bgPattern = Pattern.compile("background-image\\s*:\\s*url\\(.*?\\)", Pattern.CASE_INSENSITIVE); Matcher bgMatcher = bgPattern.matcher(noCommentStyle); if (bgMatcher.find()) { // 此处输出就是你需要的 background-image:url("urlImage") String bgConfig = bgMatcher.group().trim(); System.out.println(bgConfig); // 如果需要单独提取urlImage的值,追加以下逻辑 Pattern urlPattern = Pattern.compile("url\\s*\\([\"']?(.*?)[\"']?\\)"); Matcher urlMatcher = urlPattern.matcher(bgConfig); if (urlMatcher.find()) { String urlImage = urlMatcher.group(1).trim(); System.out.println(urlImage); } } } } }
上述代码兼容CSS属性大小写、属性与值之间有空格的场景,可直接运行使用。
内容的提问来源于stack exchange,提问作者AlexWhite
相关产品推荐
相关产品推荐

