このプロジェクトは、Hot Pepper Beautyのウェブサイトから特定のエリアのヘアサロン情報をスクレイピングし、そのデータをGoogleスプレッドシートに自動で書き込むPythonプログラムです。エリアごとに異なるシートにデータが整理されます。
- Hot Pepper Beautyの指定されたURLからヘアサロン情報を取得します。
- 複数ページにわたる情報を自動でスクレイピングします(ページネーション対応)。
- 取得した情報をGoogleスプレッドシートの指定されたシートに書き込みます。
- シートが存在しない場合は自動的に作成し、既存のデータはクリアして新しいデータを書き込みます。
各ヘアサロンについて以下の情報が取得されます。
- 店舗名
- アクセス
- カット料金
- 席数
- ブログ件数
- 口コミ件数
- 店舗URL
まず、このリポジトリをローカルにクローンします。
git clone [リポジトリのURL]
cd hot-pepper
Pythonの仮想環境を作成し、アクティベートします。
python -m venv venv
# Windowsの場合
.\venv\Scripts\Activate.ps1
# macOS/Linuxの場合
source venv/bin/activate
必要なPythonライブラリをインストールします。
pip install requests beautifulsoup4 google-api-python-client google-auth-oauthlib
Google Sheets APIを使用するために、GCPで以下の設定が必要です。
- GCPプロジェクトの作成または選択:
- Google Cloud Console (
https://console.cloud.google.com/
) にアクセスし、新しいプロジェクトを作成するか、既存のプロジェクトを選択します。
- Google Cloud Console (
- Google Sheets APIの有効化:
- ナビゲーションメニューから「API とサービス」>「ライブラリ」に移動し、「Google Sheets API」を検索して有効にします。
- サービスアカウントの作成:
- ナビゲーションメニューから「API とサービス」>「認証情報」に移動します。
- 「認証情報を作成」をクリックし、「サービスアカウント」を選択します。
- サービスアカウント名(例:
hotpepper-scraper-service
)を入力し、「作成して続行」をクリックします。 - 「このサービスアカウントにプロジェクトへのアクセスを許可する」セクションで、「ロールを選択」ドロップダウンから**「編集者」**を選択し、「続行」>「完了」をクリックします。
- サービスアカウントキーのダウンロード:
- 作成したサービスアカウントのメールアドレスをクリックします。
- 「キー」タブに移動し、「鍵を追加」>「新しい鍵を作成」をクリックします。
- キーのタイプとして「JSON」を選択し、「作成」をクリックします。JSONファイルが自動的にダウンロードされます。
- 認証情報ファイルのリネームと配置:
- ダウンロードしたJSONファイルの名前を
credentials.json
に変更します。 - この
credentials.json
ファイルを、プロジェクトのルートディレクトリ(hot-pepper/
)に配置します。
- ダウンロードしたJSONファイルの名前を
- Googleスプレッドシートの共有設定:
- データを書き込みたいGoogleスプレッドシートを開きます。
- 「共有」ボタンをクリックし、作成したサービスアカウントのメールアドレスを「編集者」として追加します。サービスアカウントのメールアドレスは、GCPの「API とサービス」>「認証情報」ページで確認できます。
すべてのセットアップが完了したら、仮想環境がアクティベートされていることを確認し、以下のコマンドでスクリプトを実行します。
python hotpepper_scraper.py
スクリプトが実行されると、Hot Pepper Beautyからデータがスクレイピングされ、指定されたGoogleスプレッドシートに書き込まれます。
- Hot Pepper BeautyのウェブサイトのHTML構造が変更された場合、スクレイピングロジック(
hotpepper_scraper.py
内のセレクタなど)の修正が必要になる場合があります。 - Google Sheets APIの利用には、Googleの利用規約が適用されます。APIのレート制限などに注意してください。
credentials.json
ファイルは機密情報です。Gitリポジトリにコミットしないように、.gitignore
ファイルで適切に管理されています。