Google Custom Search APIでGoogle検索ヒット数を取得する

Google Custom Search APIでGoogle検索ヒット数を取得する

Google検索ヒット数を取得したい

Google検索で単語を検索したときに表示される

約 00,000 件 (0.00 秒)

のような検索ヒット数を取得したい。
数十個なら手作業でなんとかなるが数千個だと無理。

はじめはスクレイピングしようと思ったがGoogleはガチガチのスクレイピング対策してて難しそう。
調べたところ「Google Custom Search API」を使えばできそうなのでこれを使う。

1. Google Custom Search API 準備

「Google Custom Search API」を使用するための準備。
GCPのアカウントが必要。

  1. 新しいプロジェクトを作成

「Google Cloud Console」の上部の欄から「新しいプロジェクトを作成」をクリック。

適当な名前を付けて新しいプロジェクトを作成。

https://console.cloud.google.com/




そのまま作成したプロジェクトを選択。

  1. 「Custom Search API」を有効にする

Custom Search APIのページ(https://console.cloud.google.com/apis/library/customsearch.googleapis.com)
から「Custom Search API」を有効にする。



  1. API キーを作成

「API とサービス → 認証情報」(https://console.cloud.google.com/apis/credentials)
から「+認証情報を作成」をクリック。



「APIキー」を選択すると下記のようにAPIキーが作成される。
APIキーをあとで使うので控えておく。



「APIキーを編集」のところを押して編集画面へ行く。

  1. APIキーの編集

IPアドレスの制限。
特定のIPアドレスからしかAPIを使用できないように設定する。
これにより他人にAPIを使用されないようにする。

IPアドレスは適当なサイトで調べられる。
https://minsoku.net/ip_confirmations



APIキーから呼び出せるAPIを制限する。
ここで「Custom Search API」を使えるようにする。



  1. 検索エンジンの作成

「プログラム可能な検索エンジン」(https://programmablesearchengine.google.com)
から「追加」をクリック。



適当に設定して「作成」。



表示されるスクリプトに「検索エンジンID」が記載されている。
「カスタマイズ」からも調べられる。




「検索エンジンID」はあとで使うので控えておく。

  1. 検索エンジンの設定

さっき作った検索エンジンから「プログラマティックなアクセス」→「開始する」をクリック。


2. Python コード

上記で取得した

  • 「APIキー」
  • 「検索エンジンID」

の2つが必要。

2.1. 最低限動くコード

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import requests
import json

def google_custum_search(apiKey, customSearchEngineID, query):
url = "https://www.googleapis.com/customsearch/v1"
params = {
'key': apiKey,
'cx': customSearchEngineID,
'q': query
}

response = requests.get(url, params=params)

if response.status_code == 200:
return json.loads(response.text)
else:
print(f"エラー: {response.status_code} {response.text}.")
return None


# APIキーと検索エンジンIDを設定
apiKey = "APIキーを入れる"
customSearchEngineID = "検索エンジンIDを入れる"
query = "キラッCHU"

response = google_custum_search(apiKey, customSearchEngineID, query)

if response is not None:
print(f"ヒット数 {query}: {response['searchInformation']['totalResults']}")

これを動かすとquery = "キラッCHU"にいれた通り、キラッCHUのGoogle検索ヒット数が表示される。

1
ヒット数 キラッCHU: 191000

response['searchInformation']の中にヒット数以外にもいろいろ情報があるので必要に応じて使う。

2.2. エラー例

1
2
3
"message": "The provided API key has an IP address restriction. The originating IP address of the call () violates this restriction.",

"status": "PERMISSION_DENIED",

この辺のメッセージが出たときはIPアドレスの許可がされていない。
「APIキーの編集 」に問題がある、私の場合はIPv6設定に問題があった。

  • IPv4だけでなくIPv6も設定する
  • 設定してから5分待つ

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×