Edited at

Google Search Console のAPIからブログの検索データを取得


やったこと

Google Search ConsoleのAPIを使って、自分のブログの検索パーフォーマンスを取得しました。結果をCSVで保存します。

取得したデータは記事のURLごとの

・検索クエリ

・CTR

・インプレッション

・掲載順位

です。


結果

12071.png


Google Search ConsoleのAPIを使うために

プロジェクトを作成する(既にある場合はこのステップをパス)

②プロジェクトにSearch ConsoleのAPIを登録する

③認証情報を作成せず、サービスアカウントを作成する(認証情報をJson形式でダウンロードしてください)

Search Consoleのホームから設定ユーザーと権限ユーザーを追加でサービスアカウントを追加(権限は制限付き)

ダウンロードされた認証情報(JSONファイル)は実行環境のディレクトリに移動またはコピーしてください。


コード実装に当たって

まずGoogleのクライアントライブラリをインポートします。

$ pip install --upgrade google-api-python-client

後ほど、このライブラリを使用して

ServiceAccountCredentials.from_json_keyfile_name() :ダウンロードしたJSONファイルから資格情報を取得

apiclient.discovery.build(): GoogleAPIのサービスオブジェクトを生成

します。このbuildしたサービスオブジェクトを使って処理を実装することになります。


searchConsole.py

以下のコードを実行すると、2018-12-04_searchData.csvというファイルが保存されます。


searchConsole.py

import pandas as pd

import apiclient
from oauth2client.service_account import ServiceAccountCredentials

scope=['https://www.googleapis.com/auth/webmasters.readonly']
json_path='searchconsoleKey.json'#JSONファイルの名前

credentials=ServiceAccountCredentials.from_json_keyfile_name(json_path, scope)
webmasters=apiclient.discovery.build('webmasters', 'v3', credentials=credentials)

url='https://tdoritos.net/'#サイトのURL
g_list=['query','page']
start_date="2018-11-04"
end_date="2018-12-04"
row_limit=2500

body={
'startDate': start_date,
'endDate': end_date,
'dimensions': g_list,
'rowLimit':row_limit
}

res=webmasters.searchanalytics().query(siteUrl=url, body=body).execute()
df=pd.DataFrame(res["rows"])

for i,d in enumerate(d_list):
df[d]=df['keys'].apply(lambda x:x[i])

df.drop(columns='keys',inplace=True)
f="{}_searchData.csv".format(end_date)
df.to_csv(f,encoding="utf_8_sig",index=False)
print("done")



2018-12-04_searchData.csv

12071.png