Java 使用Jsoup获取所有img src
我有以下Java 使用Jsoup获取所有img src,java,jsoup,Java,Jsoup,我有以下imgsrc部分的html代码: <img src="https://lh3.googleusercontent.com/...rw" srcset="https://lh3.googleusercontent.com/...rw 2x" class="T75of DYfLw" width="551" height="310" alt="Screenshot Image&q
imgsrc
部分的html代码:
<img src="https://lh3.googleusercontent.com/...rw" srcset="https://lh3.googleusercontent.com/...rw 2x" class="T75of DYfLw" width="551" height="310" alt="Screenshot Image"">
但现在我无法从第一种情况中获得该值,其中该属性是srcset
,而不是datasrcset
。我能在不进行额外迭代的情况下获得两种方案的SRC吗?比如不创建另一个流,然后将所有结果合并到一个集合中?也许Jsoup库中的某些正则表达式和另一种方法(似乎.absUrl
不适用于正则表达式)可以有所帮助
我不喜欢带有replace
的部分(可能一些src将包含2x作为自己的部分)
但是如果没有这个操作,我会得到不正确的src
https://lh3.googleusercontent.com/Z...=w1440-h620-rw 2x
我是否可以改进此
用smth else替换解决方案?您可以尝试创建集合集合,然后使用flatMap
List<String> src = htmlDocument.select("img[src]").stream()
.filter(img -> img.attr("alt").equals("Screenshot Image"))
.map(element -> {
List<String> url = new ArrayList<>();
url.add( element.absUrl("data-srcset").replace("2x", ""));
url.add( element.absUrl("srcset"));
return url;
})
.flatMap(List::stream)
.collect(Collectors.toList());
编辑
我假设您可以在同一个映像中同时使用srcset和data srcset。再次阅读,我最终找到了更好的方法
List<String> src = htmlDocument.select("img[src]").stream()
.filter(img -> img.attr("alt").equals("Screenshot Image"))
.map(element -> StringUtils.isNotEmpty(element.absUrl("srcset")) ?
element.absUrl("srcset") :
element.absUrl("data-srcset").replace("2x", ""))
.collect(Collectors.toList());
List src=htmlDocument.select(“img[src]”)stream()
.filter(img->img.attr(“alt”).equals(“屏幕截图”))
.map(element->StringUtils.isNotEmpty(element.absUrl(“srcset”))?
元素。absUrl(“srcset”):
element.absUrl(“数据srcset”).replace(“2x”,“”)
.collect(Collectors.toList());
https://lh3.googleusercontent.com/Z...=w1440-h620-rw 2x
List<String> src = htmlDocument.select("img[src]").stream()
.filter(img -> img.attr("alt").equals("Screenshot Image"))
.map(element -> {
List<String> url = new ArrayList<>();
url.add( element.absUrl("data-srcset").replace("2x", ""));
url.add( element.absUrl("srcset"));
return url;
})
.flatMap(List::stream)
.collect(Collectors.toList());
StringUtils.substringBefore(element.absUrl("data-srcset")," ")
List<String> src = htmlDocument.select("img[src]").stream()
.filter(img -> img.attr("alt").equals("Screenshot Image"))
.map(element -> StringUtils.isNotEmpty(element.absUrl("srcset")) ?
element.absUrl("srcset") :
element.absUrl("data-srcset").replace("2x", ""))
.collect(Collectors.toList());