こんにちは。
これまでTwitterのツイート検索API、Google Custom Search APIを利用した画像自動収集プログラムをご紹介しました。
最終回となる今回は、Microsoftが提供するBing Web Search APIを利用した画像自動収集プログラムを紹介します。
サブスクリプションキーの取得
MicrosoftのBing Web Search APIは、Microsoft Azureと呼ばれるクラウドプラットフォームによって提供されます。
そしてBing Web Search APIを利用するには、サブスクリプションキーを取得する必要があります。
有効期限
最初に言っておくと、Bing Web Search APIを無料で使える期間は30日間です。
それ以降は有料プランへの切り替えが必要になります。なお、勝手に課金されることはありませんので、ご安心ください。
無料サブスクリプションキーの取得
それでは早速サブスクリプションキーを取得します。
まずはMicrosoft Azureの登録サイトにアクセスします。
アクセスしたら「Bing Search API v7」の「APIキーの取得」をクリックしましょう。
表示されたダイアログにて規約への同意と、利用する国・リージョンを選択して「次へ」をクリックします。
次に表示されるダイアログにて「Microsoft」「Facebook」「LinkedIn」「GitHub」のいずれかのアカウントでログインします。
もしもアカウントを持っていない場合は、Azure無料アカウント登録よりMicrosoftアカウントを作成しましょう。
ログインできれば登録完了です。30日間有効のサブスクリプションキー(APIキー)が2つ発行されます。
画像自動収集プログラムの実装
私が実装したプログラム例を示します。実装はPython 3.6.1(Anaconda 4.4.0)で行っています。
GitHubにも掲載しています。
imagecrawler/bing_image_crawler.py at master · quotto/imagecrawler · GitHub
# -*- coding:utf-8 -*- import math import requests import imgutil import time # image save path path = "/path/to/save" imgutil.mkdir(path) url = "https://api.cognitive.microsoft.com/bing/v7.0/images/search" # parameters query = "キーワード" count = 50 # 1リクエストあたりの最大取得件数 default:30 max:150 mkt = "ja-JP" # 取得元の国コード num_per = 10 # リクエスト回数(count * num_per=取得画像数) offset = math.floor(count / num_per) # ループ回数 subscriptionKey="xxxxxxxxxxxxxxxxxxx" # Bing Search API Key headers = {'Ocp-Apim-Subscription-Key':subscriptionKey} for offset_num in range(offset): params = {'q':query,'count':count,'offset':offset_num*offset,'mkt':mkt} r = requests.get(url,headers=headers,params=params) data = r.json() for values in data['value']: image_url = values['contentUrl'] try: imgutil.download_img(path,image_url) except Exception as e: print("failed to download image at {}".format(image_url)) print(e) time.sleep(1)
imgutilの実装は以下を参照してください。
imagecrawler/imgutil.py at master · quotto/imagecrawler · GitHub
ポイント
簡単にポイントに触れておきます。
サブスクリプションキーの設定
Bing Web Search APIを利用するためにはhttpリクエストヘッダーの「Ocp-Apim-Subscription-Key」に取得したサブスクリプションキーを設定します。
パラメータ
Bing Web Search APIに設定するパラメータは以下のとおりです。
- q:検索ワード
- count:1リクエストあたりの取得件数
- offset:データを取得開始するインデックス
- mkt:結果の取得元となる国コード
リクエストと結果の取得
サブスクリプションキーとパラメータを設定したら、普通にhttpリクエストを実行するだけです。
結果はJSON形式で取得されます。キー「value」の配列として、各「contentURL」の値が画像のURLとなります。あとはこのURLから画像をダウンロードします。
以上、Microsoftの提供するBing Web Search APIのご紹介でした。
無料枠が30日間と期限付きですが、TwitterやGoogleと比べてAPIキーの取得や実装は非常に簡単です。
チャチャッと画像を集めたい場合はぜひ利用を検討してみてください。
Microsoft Azure実践ガイド (impress top gear)
- 作者: 真壁徹,松井亮平,水谷広巳,横谷俊介
- 出版社/メーカー: インプレス
- 発売日: 2017/12/15
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る