26

Google画像検索APIは廃止されたため、これにはGoogleカスタム検索APIを使用する必要があります

私はそれを使って小さな例を作りました。私の問題は、グーグル画像検索結果のみを返したいということです。これにより、Web結果が表示され、ユーザーは画像結果に切り替えることができます。デフォルトで画像の結果のみを表示するにはどうすればよいですか?

<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
  google.load('search', '1', {language : 'hu'});
  google.setOnLoadCallback(function() {
    var customSearchOptions = {
        enableImageSearch: true,
        imageSearchOptions: {
              layout: google.search.ImageSearch.LAYOUT_CLASSIC
        }
    };

    var options = new google.search.DrawOptions();
    options.setAutoComplete(true);

    var customSearchControl = new google.search.CustomSearchControl('XXX', customSearchOptions);

    customSearchControl.setResultSetSize(google.search.Search.LARGE_RESULTSET);
    customSearchControl.setAutoCompletionId('XXX');

    customSearchControl.draw('cse', options);
  }, true);
</script>
<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />

APIドキュメントは非常に貧弱で、結果を追加する方法のみを説明しています。

4

7 に答える 7

36

Google画像検索がカスタム検索エンジンAPIでサポートされるようになりました。このページのAPIパラメータのセクションを参照してください。私はPythonでAPIを使用しており、アプリケーションではAPI呼び出しでパラメーターを指定するだけです。

searchType = "image"

cseブログのこの投稿を参照してください。

編集:マークが以下のコメントで指摘しているように、CSEコンソールで[画像検索を有効にする]をクリックする必要があります。

于 2012-10-02T19:26:00.880 に答える
6

Google Custom Search Element Control API-ドキュメントのWebサイトによると、これは可能です。

https://developers.google.com/custom-search/docs/element

これは、デフォルトで画像による検索に使用されるフラグメントです。

'defaultToImageSearch'

したがって、これを使用するための完全な構文は次のようになると思います。

<script>
.
// Google custom search code, ids go here...
.
</script>
<gcse:search></gcse:search>
**<gcse:searchresults enableImageSearch="true" defaultToImageSearch="true">**
于 2013-01-26T17:14:44.743 に答える
5

WebExtensionsチュートリアルを受講している方のために、新しいCSE機能で動作させるためにpopup.jsで使用した更新されたコードを次に示します。

/**
 * @param {string} searchTerm - Search term for Google Image search.
 * @param {function(string,number,number)} callback - Called when an image has
 *   been found. The callback gets the URL, width and height of the image.
 * @param {function(string)} errorCallback - Called when the image is not found.
 *   The callback gets a string that describes the failure reason.
 */
function getImageUrl(searchTerm, callback, errorCallback) {
  // Google image search - 100 searches per day.
  // https://developers.google.com/image-search/
  // var searchUrl = 'https://ajax.googleapis.com/ajax/services/search/images' +
  //   '?v=1.0&q=' + encodeURIComponent(searchTerm);
  var searchUrl = 'https://www.googleapis.com/customsearch/v1' +
    '?key=' + key + '&cx=' + cx + '&searchType=image&q=' + encodeURIComponent(searchTerm);

  var x = new XMLHttpRequest();
  x.open('GET', searchUrl);
  // The Google image search API responds with JSON, so let Chrome parse it.
  x.responseType = 'json';
  x.onload = function() {
    // Parse and process the response from Google Image Search.
    var response = x.response;
    if (!response || !response.items || response.items.length === 0) {
      errorCallback('No response from Google Image search!');
      return;
    }
    var firstResult = response.items[0];
    // Take the thumbnail instead of the full image to get an approximately
    // consistent image size.
    var imageUrl = firstResult.image.thumbnailLink;
    var width = parseInt(firstResult.image.thumbnailWidth);
    var height = parseInt(firstResult.image.thumbnailHeight);
    console.assert(
        typeof imageUrl == 'string' && !isNaN(width) && !isNaN(height),
        'Unexpected respose from the Google Image Search API!');
    callback(imageUrl, width, height);
  };
  x.onerror = function() {
    errorCallback('Network error.');
  };
  x.send();
}

主に、getImageUrlの検索URL(searchType=image前述のとおり)と応答構造参照を変更し、CSEエンジンを設定します。CSEがImage searchオンになっていることを確認し、オプションリストからSites to search選択してください。Search the entire web but emphasize included sites

于 2017-04-08T18:04:13.493 に答える
3

私はこれについて100%確信しているわけではありませんが、APIがあなたがやろうとしていることをサポートしているとは思いません。Googleの検索APIは、基本的な機能(標準の検索APIの20件の結果の制限など)さえも欠いていることで悪名高いため、これはまったく驚くべきことではありません。私が3日間でこれに答えた最初の人であるという事実は、これがおそらくサポートされていないことを示すもう1つの兆候だと思います(または、サポートされている場合、Googleは誰にもわざわざ教えませんでした)。

あなたがこれを気に入らないことは知っていますが、あなたの最善の選択肢は、返された結果セットから画像を自分で削り取ることだと思います。これは通常、Googleの結果データを扱うときに人々が頼らなければならないことです。幸いなことに、それらのフロントエンドコードは非常に一貫しているので、いくつかの適切に調整された正規表現の一致および/または分割は、yaのためのトリックを行う必要があります。

そして、はい、GoogleがこのAPIに対してそのようなひどいサポートを提供したのは完全なBSです。=)

于 2011-12-12T22:33:11.550 に答える
2

公式のGoogleAJAXAPIグループでより信頼できる回答を得ようとしましたが、回答はNO(!)のようです。Googleカスタム検索APIは現在、画像検索のみをサポートしていません。代わりに、廃止されたGoogle画像検索APIを使用できます。

これを確認してください

于 2011-12-14T10:50:09.260 に答える
2

次の行を追加してみてください:

customSearchOptions['disableWebSearch'] = true;
于 2012-06-04T16:20:23.263 に答える
2

これを試してみてください

customSearchOptions['searchType'] = "image"
customSearchOptions['enableImageSearch'] = true
customSearchOptions['disableWebSearch'] = true;
于 2015-06-04T14:46:35.740 に答える