Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Jsoup获取所有img src_Java_Jsoup - Fatal编程技术网

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());