Google の「Custom Search API」と「カスタム検索エンジン」で画像をダウンロードする


Amazon SageMaker で使用する画像を集めるためにGoogleの「Custom Search API」とカスタム検索エンジンを使ってみる

Custom Search API と カスタム検索エンジン(CSE)について

Custom Search API は Google の検索結果を API で取得できるもの。
1日あたり100件の検索クエリを無料で、追加のリクエストは1000クエリあたり5ドル。(2018/10/25現在)
Custom Search API を使うには、カスタム検索エンジンが必須となる。
カスタム検索エンジンはサイト内検索が出来るやつで無料です。

Custom Search API は1日あたり100件の検索クエリが無料で、1クエリで得られる検索結果は10件なので、
100クエリ * 10件で1,000件の結果が得られる。
画像ダウンロードはダウンロード出来ない画像もあって、1日700〜800枚くらいしかダウンロード出来ないっぽい。

1. Google Developers Console にアクセス

Google にアカウントを作って Google Cloud Console のAPIとサービス にアクセスする。

2. API とサービスの有効化にする

API とサービスの有効化 をクリックする。

3. Custom Search API を検索する

新しい API ライブラリ画面になるので「custom search」で検索して「Custom Search API」をクリックする。

4. Custom Search API を有効化する

「Custom Search API」を有効にする。

5. プロジェクトを作成する

API を有効にするとプロジェクトが1個も無ければプロジェクト作成を促される(多分)ので作成ボタンをクリックする。

適当なプロジェクト名を入力して、プロジェクトを作成する。

6. APIキーを取得する

メニューの認証情報から認証情報を作成のプルダウンでAPIキーをクリックする。

APIキーを作成しましたのダイアログが出るので、キーを制限をクリックする。

キーに名前を付けて保存する。APIキーをプログラムで使用するのでメモっておく。

7. カスタム検索エンジンを作成する

Google カスタム検索エンジンのサイトにアクセスするして Add をクリックする。

検索するサイトに「https://www.google.co.jp/ 」 を入力、検索エンジンの名前を適当に入力して作成をクリックする。

8. カスタム検索エンジン設定を更新する

メニューの検索エンジンの編集の設定から、画像検索をオン、検索するサイトの google を削除、ウェブ全体を検索をオンにする。
検索エンジンIDをプログラムで使用するのでメモっておく。

9. Python の実行環境を作成する

AmazonLinux2 上に Python3 をインストールする。

$ sudo amazon-linux-extras install python3
$ sudo pip3 install --upgrade pip
$ sudo yum install -y  gcc gcc-c++ python3-devel

必要となる python モジュールを vendor ディレクトリにインストール

$ pip3 install google-api-python-client -t ./vendor
$ pip3 install httplib2 -t ./vendor

10. Python スクリプトを用意する

Googleの画像検索APIを使って画像を大量に収集する から拝借しました。
google_api.py の httplib2 の import を vendor ディレクトリからに修正。
sha3 でエラーが出てコメントアウトしたらいけました。
「API_KEY」にCustom Search API のAPIキーを入力、「CUSTOM_SEARCH_ENGINE」にカスタム検索エンジンの検索エンジンIDを入力する。

import sys
sys.path.append(os.path.join(os.path.abspath(os.path.dirname(__file__)), 'vendor'))
import httplib2
#import sha3
・
・
・
if __name__ == '__main__':
    # -------------- Parameter and Path Settings -------------- #
    API_KEY = 'xxxxxxxxxxxxx'
    CUSTOM_SEARCH_ENGINE = 'xxxxxxxxxxxxxxx'

11. Python を実行する

スクリプトを実行すると「save_dir_path」に指定したディレクトリの「imgs/」に画像が保存される。

$ python3 google_api.py