【问题标题】:Google image search says api no longer available谷歌图片搜索说 api 不再可用
【发布时间】:2015-12-02 05:16:11
【问题描述】:

我正在使用谷歌图片搜索 API。直到昨天它还在工作,但今天早上它说“这个 API 不再可用”

是不是正式关闭了,还是我这边有什么错误

请求

https://ajax.googleapis.com/ajax/services/search/images?v=1.0&rsz=8&q=cute+kittens

回应

{"responseData": null, "responseDetails": "This API is no longer available.", "responseStatus": 403}

【问题讨论】:

  • 同样的事情发生在我身上。互联网上似乎没有其他可行的选择。感谢谷歌。 superfeedr 声称能够工作,但经过数小时试图理解他们可怕的文档后,没有办法做你在上面做的事情。我希望有人尽快实施解决方案:(
  • 天哪,我的搜索引擎整整四个月都没有工作,直到我偶然发现了这个......
  • Google 应该更新他们的 Chrome 扩展教程,因为它使用 Google 图片搜索。显然,这不像教程所示的那样工作。

标签: google-api google-image-search


【解决方案1】:

我找到的答案是使用 Google 的自定义搜索引擎 (CSE) API。请注意,这限制为每天 100 个免费请求。

创建cx 并对其进行修改以搜索图像

  1. 根据您的搜索条件在https://cse.google.com/cse/create/new 创建自定义搜索引擎。
  2. 选择要搜索的网站(如果您想搜索整个网络,请将此留空,否则您可以输入一个网站以在一个特定网站中搜索)
  3. 输入搜索引擎的名称和语言。
  4. 单击“创建”。您现在可以在浏览器 URL 中找到 cx
  5. 在“修改您的搜索引擎”下,单击“控制面板”按钮。在“编辑”部分,您会找到一个带有开/关按钮的“图像搜索”标签,将其更改为 ON。点击“更新”以保存您的更改。

使用 API 进行搜索

API 端点 url 是 https://www.googleapis.com/customsearch/v1

以下 JSON 参数用于此 API:

  • q:指定搜索文本
  • num:指定结果数。需要 1 到 10(含)之间的整数值
  • start:结果的“偏移量”,搜索应该从哪个结果开始。需要 1 到 101 之间的整数值。
  • imgSize:图片大小。我用"medium"
  • searchType:必须设置为"image"
  • filetype:指定图片的文件类型。我使用了 `"jpg",但如果文件扩展名对您不重要,您可以忽略它。
  • key:API 密钥,从https://console.developers.google.com/ 获取
  • cx:上一节的自定义搜索引擎ID

只需将上述参数作为 JSON 传递给 API 端点(也在上面列出),即可发出 GET 请求。

注意:如果您在搜索引擎设置中设置了推荐人列表,则通过浏览器访问该 URL 可能无法正常工作。您将需要从该列表中指定的服务器进行 AJAX 调用(或其他语言的等效调用)。它仅适用于配置设置中指定的引荐来源网址。

参考: https://developers.google.com/custom-search/json-api/v1/reference/cse/list

【讨论】:

  • 这是一个很好的解决方案,但请注意此 API 有配额。每天免费查询 100 次。之后每 1,000 次查询 5 美元。即使启用了计费,您每天也不能超过 10,000 个查询,最高速率为每秒 1 个查询。
  • 记得选择“要搜索的站点”。 “搜索整个网络,但强调包含的网站”
  • 您需要在高级下的 Image.org 类型下输入一些内容,然后才能创建自定义搜索引擎。然后,您可以在打开图像搜索时删除该标签。
  • Google 现在要求您输入网站进行搜索:“在创建搜索引擎之前,您必须至少输入一个网站或架构。”
  • @Dexter(以及其他所有人......)显然他们已经在“设置”菜单中隐藏了搜索整个网络的选项。因此,您可以为随机域创建自定义搜索引擎,将其保存,然后转到“编辑 > 设置”,删除该域并启用“搜索整个网络”。
【解决方案2】:

现在您可以使用自定义图像搜索 API 搜索图像。

您可以通过两个步骤来做到这一点:

  1. 获取 CUSTOM_SEARCH_ID

转到 - https://cse.google.ru/cse/all

您必须在此处创建新的搜索引擎。执行此操作并在此处启用图像搜索。

屏幕(我是俄罗斯人......对不起)

然后获取此搜索引擎 ID。为此,请按“获取代码”按钮:

找到带有 cx = "here will be your CUSTOM_SEARCH_ID" 的行:

好的。大功告成,第二步:

  1. 获取 SERVER_KEY

转到谷歌控制台 - https://console.developers.google.com/project

按创建项目按钮,输入名称和其他所需信息。 选择这个项目,然后去 Enable APIs 现在找到自定义搜索引擎。

并启用它。

现在我们必须转到凭据并创建新的服务器密钥:

好的。现在我们可以使用图片搜索了。

查询:

https://www.googleapis.com/customsearch/v1?key=SERVER_KEY&cx=CUSTOM_SEARCH_ID&q=flower&searchType=image&fileType=jpg&imgSize=xlarge&alt=json

替换 SERVER_KEY 和 CUSTOM_SEARCH_ID 并调用此请求。

限制:每天只能免费搜索 100 张图片。

【讨论】:

    【解决方案3】:

    如果这只是出于您自己的目的(而不是用于生产)并且您不打算滥用 Google 图片搜索,您可以使用 JSOUP 简单地从 Google 搜索结果中提取第一个图片网址。

    例如: 检索第一个缩略图的图像 URL 的代码:

    public static String FindImage(String question, String ua) {
                String finRes = "";
    
        try {
                String googleUrl = "https://www.google.com/search?tbm=isch&q=" + question.replace(",", "");
                Document doc1 = Jsoup.connect(googleUrl).userAgent(ua).timeout(10 * 1000).get();
                Element media = doc1.select("[data-src]").first();
                String finUrl = media.attr("abs:data-src"); 
    
                finRes= "<a href=\"http://images.google.com/search?tbm=isch&q=" + question + "\"><img src=\"" + finUrl.replace("&quot", "") + "\" border=1/></a>";
    
            } catch (Exception e) {
                System.out.println(e);
            }
    
            return finRes;
        }
    

    指南:

    问题 - 图片搜索词

    ua - 浏览器的用户代理

    【讨论】:

      【解决方案4】:

      在阅读了几个回复后,我用图片编写了一个回复:

      1. 访问网站:https://developers.google.com/custom-search/v1/introduction,在页面上你会找到这部分,所以点击按钮Get a Key

      1. 创建或选择一个项目,然后NEXT

      1. 复制 API KEY:

      1. 访问该网站以创建您的 CX:https://cse.google.com/cse/create/new,写一些随机域,例如“www.anypage.com”,(我们将删除之后),选择一种语言,并为您的搜索引擎定义一些名称。点击按钮创建

      1. 会看到这个页面,然后点击控制面板

      1. 复制搜索引擎 ID 以备后用(这是您的 CX)。之后可以设置搜索所有网站(主动搜索整个网络,在随机网站上选择www.anypage.com然后点击按钮删除) 并且您可以激活图片搜索。所以会看到这样的:

      1. 而使用 REST 你可以得到结果,使用这个示例代码(搜索花):
      <html lang="pt">
      <head>
          <title>JSON Custom Search API Example</title>
      </head>
      <body>
          <div id="content"></div>
          <script>
              function hndlr(response) {
                  console.log(response);
                  for (var i = 0; i < response.items.length; i++) {
                      var item = response.items[i];
                      // in production code, item.htmlTitle should have the HTML entities escaped.
                      document.getElementById("content").innerHTML += "<br>" + item.htmlTitle;
                  }
              }
          </script>
          <script src="https://www.googleapis.com/customsearch/v1?key=API_KEY&cx=SEARCH_ENGINE_KEY&q=flower&searchType=image&callback=hndlr"></script>
      </body>
      </html>
      
      

      基本代码在这里:https://developers.google.com/custom-search/v1/using_rest

      1. 设置 API_KEY (key) 和 SEARCH ENGINE KEY (cx) 后,结果将如下所示:

      感谢@Vijay Shegokar、@aftamat4ik 和@Alladinian

      【讨论】:

        【解决方案5】:

        将 API 网址更改为 Google Custom Image search

        提供与 API KEY 和 CX 相同的参数。

        More Info and Explorer

        【讨论】:

        • 新的 google API 将让您每天只使用 100 个请求!为什么 !这是最好的 :( !! 谷歌需要钱
        • 你可以做超过 100 个,但不是免费的
        • 我只能想到免费搜索:)
        【解决方案6】:

        这是要使用的完整 URL 模板

        我们可以去掉不必要的参数。

        https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&cref={cref?}&sort={sort? }&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter ={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={ highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json

        我正在使用

        https://www.googleapis.com/customsearch/v1?key=ap_key&cx=cx&q=hello&searchType=image&imgSize=xlarge&alt=json&num=10&start=1

        【讨论】:

        • 不要忘记将 URL 放在双引号中。
        • 搜索图像不起作用。 `{“错误”:{“代码”:500,“消息”:空}}`
        【解决方案7】:

        Yahoo Boss API 是一个合理的替代品,虽然它不是免费的,而且结果也不是那么好。

        更新:YAHOO BOSS JSON 搜索 API 将于 2016 年 3 月 31 日停用

        【讨论】:

          【解决方案8】:

          SerpAPI 可以搜索 Google 图片并返回一个干净的 json。它与大多数编程语言集成:python、php、java、golang、nodejs...

          https://serpapi.com/images-results

          Google 限制每天的搜索次数。 但这项服务提供无限搜索...

          【讨论】:

            【解决方案9】:

            看起来我们需要实现 google 自定义搜索 API https://developers.google.com/custom-search/ 在您自己提供的页面顶部这样说

            【讨论】:

            • 请检查您的答案,似乎不正确
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-02-23
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多