繁体   English   中英

Java 从谷歌图片搜索加载第一个链接 - Jsoup

[英]Java Load first link from google image search - 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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM