はじめに
本記事では、Python初心者が楽天ゴルフの初心者コースをスプレッドシート上に抽出までをご紹介します。
本記事の背景としては、最近、ゴルフを始めたのですが、いざラウンドに出ようと思い、ゴルフ場を探してみた時にどのゴルフ場が初心者向けなのかわからず結構迷っちゃいました。
そんな時にちょうどスクレイピングの練習をしていたので、練習台として初心者コースの抽出をしてみようと思った次第です!笑
動作検証環境
今回の動作検証環境は以下の通りです。
作業エディタ:VSCode
OS:MacOS 12.0.1
Pythonバージョン:Python3.9.5
Pythonの開発環境が整っていない方はこちら

スプレッドシートにデータを出力するまでの手順
今回は、過去の記事の総集編という形でスプレッドシートに初心者おすすめコースを抽出するまでを説明していきます。
- 対象地域のゴルフ場一覧画面からゴルフ場詳細ページのURLを取得
- スプレッドシートに出力
- URLから詳細情報取得し、スプレッドシートに出力
対象地域のゴルフ場一覧画面から
ゴルフ場詳細ページのURLを取得
少し長いので本記事では割愛。
以下、記事にて取得方法をまとめています。
ゴルフ一覧画面から必要情報をCSVデータ化

スプレッドシートに出力
同じく、本記事では割愛。
以下、記事にて出力方法をまとめています。
CSVデータをスプレッドシートに出力

スプレッドシート上のURLから詳細情報取得し、スプレッドシートに出力
本記事のメインはここからです!
前記事の応用として、スプレッドシート上のデータを活用して、Seleniumで実行していきます。
スプレッドシート上のデータを取得
まずは、スプレッドシート上に出力してあるURL列(3列目)を取得していきましょう。

col_values(X) を利用することで任意の列を一括で取得することができます。
# 接続設定
json_file = 'my-project-golf-326514-c441df47b308.json'
file_name = 'python spreadsheets golf'
sheet_name1 = 'golf_list'
scope = ['https://spreadsheets.google.com/feeds',
'https://www.googleapis.com/auth/drive']
# スプレッドシートにアクセス
credentials = ServiceAccountCredentials.from_json_keyfile_name(json_file, scope)
gc = gspread.authorize(credentials)
sh = gc.open(file_name)
# シートの選択
ws = sh.worksheet(sheet_name1)
# 3列目をリストで取得
url_list = ws.col_values(3)
ページにアクセスして情報を取得
今回は、以下項目を取得していきます。
- ゴルフ場名
- 評価数値
- 初心者向けパーセント
- 中級者向けパーセント
- 上級者向けパーセント
- 女性向けパーセント
※今回取得したかった値がサイトにアクセスしないと取れないデータだったためブラウザにアクセスする方法で取得するようにしています。

#soupだと取れない値があるためブラウザ起動
driver = webdriver.Chrome(ChromeDriverManager().install())
#出力用:1行目のヘッダー作成
detail_list = [heater]
for i in range(1, len(url_list)) :
# 詳細ページにアクセス
res = driver.get(url_list[i])
#
ゴルフツールgolf_station_name = WebDriverWait (ドライバー、 30 )。まで( EC 。 visibility_of_element_located ((によって。 ID 、 'goraHeadInfoName2' )))
golf_station_result = WebDriverWait (ドライバ、30 )。まで( EC 。 visibility_of_element_located ((すること。 XPATH 、 '/ html / body / div [4] / div [2] / div [1] / div [1] / div [1] / div [2] / h2' )))
golf_station_beginner = WebDriverWait ( driver 、 30 )。まで( EC 。 visibility_of_element_located ((によって。 ID 、 'recommend_type4' )))
golf_station_medium = WebDriverWait (ドライバ、30 )。まで( EC 。 visibility_of_element_located ((では 。ID 、 'recommend_type6' )))
golf_station_senior = WebDriverWait ( driver 、 30 )。まで( EC 。 visibility_of_element_located ((によって。 ID 、 'recommend_type3' )))
golf_station_woman = WebDriverWait (ドライバ、30 )。まで( EC 。 visibility_of_element_located ((では 。ID 、 'recommend_type1' ))))
# スプレッドシートに出力用の配列に格納
detail = [url_list[i],
golf_station_name.text,
golf_station_result.text,
golf_station_beginner.text,
golf_station_medium.text,
golf_station_senior.text,
golf_station_woman.text]
detail_list.append(detail)
ドライバー。終了()
スプレッドシートに出力
ここまでくれば、画面上から情報を取得できているため、あとは出力するだけです。
#データをシートに出力
WS = SH 。ワークシート( sheet_name2 )
sh 。values_clear ( F : "H500 {sheet_name2} A1!" )
のためのdetail_dataでdetail_list :
WS 。append_row ( detail_data )
完成物
参考サイト

まとめ
本記事では、楽天ゴルフの初心者コースをスプレッドシート上に抽出までをご紹介しました。いままでの応用回でしたが、だいぶ個人的な事案になってしまったので備忘録的な形になってしまいましたね。。。