SEO分析に不可欠なGoogleサーチコンソール。SEOのために検索パフォーマンスデータをCSVで保存して自分でごにょごにょいじれるように、PythonからGoogleのAPIを叩いてみる。
前提
- Python 3系
- Google Search Console API の認証は済んでいる状態
Pythonのソースコード
# -*- coding: utf-8 -*-
import argparse
import sys
from googleapiclient import sample_tools
import pandas as pd
argparser = argparse.ArgumentParser(add_help=False)
argparser.add_argument('property_uri', type=str,
help=('Site or app URI to query data for (including '
'trailing slash).'))
argparser.add_argument('start_date', type=str,
help=('Start date of the requested date range in '
'YYYY-MM-DD format.'))
argparser.add_argument('end_date', type=str,
help=('End date of the requested date range in '
'YYYY-MM-DD format.'))
def main(argv):
service, flags = sample_tools.init(
argv, 'webmasters', 'v3', __doc__, __file__, parents=[argparser],
scope='https://www.googleapis.com/auth/webmasters.readonly')
request = {
'startDate': flags.start_date,
'endDate': flags.end_date,
'dimensions': ['date','device'],
}
response = execute_request(service, flags.property_uri, request)
print_table(response, 'searchanalytics')
def execute_request(service, property_uri, request):
return service.searchanalytics().query(
siteUrl=property_uri, body=request).execute()
def print_table(response, title):
if 'rows' not in response:
print('Empty response')
return
rows = response['rows']
tbl = []
for row in rows:
v_date = row['keys'][0] #dimensionsに2つ以上指定するとlist型でデータが返るので順に出力
v_device = row['keys'][1]
v_imp = int(row['clicks'])
v_clicks = int(row['impressions'])
v_ctr = str(round((row['ctr'] * 100),1)) + "%" #クリック率を見やすくする
v_pos = str(round(row['position'],1))
tbl.append([v_date, v_device, v_imp, v_clicks, v_ctr, v_pos])
tbl_csv = pd.DataFrame(
tbl,
columns = ['Date', 'Device', 'Click', 'Impression', 'CTR', 'Position'])
tbl_csv.to_csv(title + '.csv')
if __name__ == '__main__':
main(sys.argv)
上記を`sc.py`という名前で保存する。
コマンドラインから実行
$ python3 sc.py 'https://xxbxxqxx.com' '2019-06-01' '2019-06-30'
引数を3つ取っている。
1) Google Search Consoleに登録済みで、検索パフォーマンスを取得したいウェブサイトのURL。
2) データを取得する開始日。フォーマットは’YYYY-MM-DD`。
2) データを取得する終了日。フォーマットは’YYYY-MM-DD`。
上記のコマンドを実行すると、同じディレクトリにCSVファイルが生成されているはず。
中を開いてみると、日付、デバイス、クリック数、表示回数、CTR、平均順位が出力されている。成功!
Python初心者ゆえ、見苦しい箇所があるかもだけど、Googleがすでに用意しているサンプルコードが過不足なく良い感じなので、Pythonの基礎がわかっていれば「クリック数順ページTOP30」とか「どの国でCTRが悪い」等は簡単に出せる。
これを近いうちに自動でBig Queryあたりに持っていき、Data studioと連携までできるようになれば捗りそうだな〜。
</figure></figure></div>