概要
Google の画像検索 API が 2011/5 に使えなくなってから画像を検索をする場合は Google Custom Search API を使うことになりました
今回は Google Custom Search API を使った画像検索の方法を紹介します
クライアントは curl を使って直接 API をコールしているのでプログラムから使いたい場合は各言語の HTTP クライアントなどを使ってください
環境
- Mac OS X 10.11.5
- Google Custom Search API 2016/06/05 時点
- Google CSE 2016/06/05 時点
Google Custom Search API の有効化
https://console.developers.google.com/iam-admin/projects
にアクセスして Google Custom Search API を有効化します
「プロジェクトを作成」を選択して新規でプロジェクトを作成しましょう
まずプロジェクト名を入力します
ここは何でも OK です
プロジェクトを作成すると API の一覧画面になるのでここから「Custom Search API」を選択しましょう
「有効にする」ボタンがあるので選択し API を使えるようにします
すると認証情報を作成する旨の警告が出るのでそのまま「認証情報に進む」を選択して認証情報を作成しましょう
まず認証情報の種類を設定します
使用する API は「Custom Search API」を選択します
API を呼び出す場所は何でも OK ですが、とりあえず「ウェブサーバー (node.js, Tomcat など)」を選択しましょう
選択したら「必要な認証情報」を選択して次に進みます
作成する認証情報の名前を設定します
今回は「test-server-key」という名前にします
「リクエストを受け入れるサーバー IP アドレス (省略可)」は何も入力しないで OK です
問題なければ「API キーを作成する」を選択して API キーを作成しましょう
API キーが作成できたことを確認したら完了しましょう
認証情報の一覧画面に移動します
これで Google Custom Search API の有効化は完了です
次に Google Custom Search Engine (CSE) の作成をします
Google Custom Search Engine の作成
Google CSE では API を叩くために必要なパラメータである「検索エンジン ID」の取得を行います
https://cse.google.com/cse/all
にアクセスして Google CSE を作成します
検索エンジンの一覧画面から「Add」で新規に検索エンジンを作成します
新規で検索エンジンを作成する画面になるので必要な情報を入力します
- 検索するサイト・・・
www.google.co.jp/*
- 言語・・・日本語
- 検索エンジンの名前・・・test-engine
という感じで入力しましょう
最後の検索エンジンの名前は何でも OK です
入力に問題がなければ「作成」を選択します
作成が完了したら早速編集します
「コントロールパネル」を選択しましょう
まず肝心の「検索エンジン ID」を取得します
画面中段くらいにある詳細の「検索エンジン ID」ボタンをクリックしましょう
ポップアップが出て検索エンジン ID が表示されるので、これを使いましょう
次に画像検索を有効にします
「画像検索」の項目のトグルボタンで設定を有効にします
また、「検索するサイト」という項目が少し下にあるのでここの項目を「追加したサイトを重視して、ウェブ全体を検索する」に変更しましょう
上の画像では「音声入力」もオンになっていますが、今回は音声入力は使わないのでオフにしても OK です
一応この状態で CSE は動作するはずです
念のため動作確認したい場合は右側にあるテスト用の検索窓を使うと設定した CSE がちゃんと動作しているか確認することができます
動作確認
ここまでで
- API キー・・・Google Custom Search API から取得
- 検索エンジン ID・・・ Google CSE から取得
することができました
これらの情報を使って実際に画像検索 API をコールしてみます
今回は curl 使ってコールします
コールする URL は以下の通りです
https://www.googleapis.com/customsearch/v1?key=[API キー]&cx=[検索エンジン ID]&searchType=image&q=hawksnow-log
という感じになります
API キーと検索エンジン ID は取得したものをそれぞれ入力してください
「searchType」は画像検索なので「image」を設定します
「q」には好きな検索クエリを指定してください
これを curl でコールすると以下のような Json で結果が返ってくると思います
( 実際の結果は、kind, url, queries, nextPage, context, searchInformation などの情報も含まれていますが、結果が長いので一部を記載しています )
"items": [
{
"kind": "customsearch#result",
"title": "hawksnowlog (@hawksnowlog) | Twitter",
"htmlTitle": "\u003cb\u003ehawksnowlog\u003c/b\u003e (@\u003cb\u003ehawksnowlog\u003c/b\u003e) | Twitter",
"link": "https://pbs.twimg.com/profile_images/712848447569661952/ayfI9-77.jpg",
"displayLink": "twitter.com",
"snippet": "hawksnowlog (@hawksnowlog) |",
"htmlSnippet": "\u003cb\u003ehawksnowlog\u003c/b\u003e (@\u003cb\u003ehawksnowlog\u003c/b\u003e) |",
"mime": "image/jpeg",
"image": {
"contextLink": "https://twitter.com/hawksnowlog",
"height": 256,
"width": 256,
"byteSize": 24875,
"thumbnailLink": "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQ3-Q1N6LqmggIC_Hejxcm4PHfIFtNJP7kGvQT1APE2AiT53ptBp-FZ0A",
"thumbnailHeight": 111,
"thumbnailWidth": 111
}
}
という感じです
実際に指定できるパラメータは他にもたくさんあるので API エクスプローラで指定できるパラメータを見ながらパラメータを調整するといいと思います
例えば「num」というパラメータは一回の検索結果で取得できる数を指定できるパラメータですが、これを 1 とすると先頭の一件のみを取得することができるようになります
( ちなみに num はデフォルトで 10 で 10 以上は指定できないようです )
リクエスト数の確認
おまけですが API のリクエスト数は Google Custom Search API のダッシュボードから確認することができます
有効な API -> Custom Search API -> 使用量
で確認することができます
リアルタイムにデータは更新されるので、リクエスト数の限界のエラーなどが出る場合はここで確認するといいと思います
最後に
紹介は以上です
実はこの Google Custom Search API は有料のサービスです
執筆時点での公式を見ると
For CSE users, the API provides 100 search queries per day for free
とあり 1 日 100 request しか出来ないようです
なので、大量にページネイトする処理や大量に検索リクエストをするような処理があるとすぐに使えなくなってしまうと思います
無料の範囲で使う場合はキャッシュなどを使ってあまりリクエストさせないような仕組みを検討する必要がありそうです
P.S 20160607
Google Custom Search API と Google 本家で検索した結果は必ずしも一緒になることはないらしいので、その点は注意が必要です
https://support.google.com/customsearch/answer/4513751?hl=ja&ref_topic=4513742
0 件のコメント:
コメントを投稿