如何解决Java从谷歌图片搜索加载第一个链接 - Jsoup
大家好,我的学校项目需要帮助。 我需要从谷歌图片搜索中获取第一个链接。
public String nadjiURLPoNazivu(String str) {
List<String> links = new ArrayList();
try {
str = str.trim();
if (str.contains(" ")) {
str = str.replace(" ","+");
}
Document doc = Jsoup.connect("https://www.google.com/search?q=" + str + "+400x400" + "&rlz=1C1ASVA_enRS799RS799&hl=en&sxsrf=ALeKk03xEqKmfzIK77mjVPn_T-s2wmETFw:1622395752826&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjezqCU9_HwAhWN76QKHe7cAY4Q_AUoAXoECAEQAw&biw=1366&bih=625").get();
Elements el = doc.getElementsByAttribute("data-src");
for (Element element : el) {
links.add(element.attr("data-src"));
}
} catch (IOException ex) {
ex.printStackTrace();
}
if (links.isEmpty()) {
// MessageUtil.showErrorMessage("Ne postoji slika za takav naziv!");
links.add("https://previews.123rf.com/images/esfirse/esfirse1812/esfirse181200156/115299132-cross-sign-red-x-icon-isolated-on-white-background-circle-symbol.jpg");
return links.get(0);
}
return links.get(0);
}
此代码有效,但它没有为我提供第一个链接,每次加载时它都会从该搜索中获取一个随机图片链接。
编辑:加载也很慢,有没有办法加快速度?
解决方法
它不会每次都加载随机图像。它基于图像的来源。如果您看到第一张图片,您可以看到基于 base64 渲染的图片和从 URL 加载的第二张图片。从您的代码中,您将获得带有链接的第一张图片(不是 base64)。
如果你想加快删除不需要的 for 循环。
public String nadjiURLPoNazivu(String str) {
String links = null;
try {
str = str.trim();
if (str.contains(" ")) {
str = str.replace(" ","+");
}
String url = "https://www.google.com/search?q=" + str + "+400x400"
+ "&rlz=1C1ASVA_enRS799RS799&hl=en&sxsrf=ALeKk03xEqKmfzIK77mjVPn_T-s2wmETFw:1622395752826&source=lnms&tbm=isch&sa=X&ved=2ahUKEwjezqCU9_HwAhWN76QKHe7cAY4Q_AUoAXoECAEQAw&biw=1366&bih=625";
System.out.println(url);
Document doc = Jsoup.connect(url).get();
Elements el = doc.getElementsByAttribute("data-src");
if(!el.isEmpty()) {
links = el.get(0).attr("data-src");
}
} catch (IOException ex) {
ex.printStackTrace();
}
if (Objects.isNull(links)) {
// MessageUtil.showErrorMessage("Ne postoji slika za takav naziv!");
links = "https://previews.123rf.com/images/esfirse/esfirse1812/esfirse181200156/115299132-cross-sign-red-x-icon-isolated-on-white-background-circle-symbol.jpg";
return links;
}
return links;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。