上个项目写小程序的时候,需要抠取富文本中的图片,作为文章封面展示。最开始没考虑周全,根据http或者https前缀和指定图片后缀去抠取图片。最后发现有很多图片无法抠取。后面转换思路,根据img 标签来抠取图片,方便了很多,而且都能抠出来,下面小编贴出实现代码。这儿只做了图片链接的抠取,过滤了base64图片的情况。如果读者需要抠取其他的标签,如:视频,链接。。。。只需要按相应的规则进行抠取即可。
代码实现
package com.dftcmedia.tckk.microservice.sskx.microapp;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
public class TestJsoup {
public static void main(String[] args) {
String content="富文本內容";
List<String> imgUrls = parseImg(content);
for (String imgUrl : imgUrls) {
System.out.println(imgUrl);
}
}
public static List<String> parseImg(String content){
Element doc = Jsoup.parseBodyFragment(content).body();
Elements elements = doc.select("img[src]");
List<String> imgUrls = new ArrayList<>(elements == null ? 1 : elements.size());
for (Element element : elements) {
String imgUrl = element.attr("src");
if(Objects.nonNull(imgUrl)){
String substring = imgUrl.substring(0, 4);
if("http".equals(substring)){
imgUrls.add(imgUrl);
}
}
}
return imgUrls;
}
}