食べログクロール実装ガイド

週1回取得 → CSV生成 → Airtable連携
実装フロー(全体像)
1

週1回、食べログをクロール

Python スクリプト(GAS or launchd)で目黒駅周辺の全店舗データを自動取得

2

取得データを CSV に出力

店名、住所、営業時間、評価、保存数 etc. を CSV ファイルで保存

3

CSV からサマリデータを生成

価格帯別の店舗数、営業時間の分布、ジャンル別評価平均 等を計算

4

Airtable にアップロード

マスターデータ(テーブル1)とサマリ(テーブル2)を自動連携

5

ダッシュボード&分析

Airtable の Grid / Gallery / Chart で可視化・コンサル資料化

ステップ1:週1回クロール実装

目標:

毎週月曜朝 9:00 に、目黒駅周辺の食べログ全店舗(627 件)をクロール

実装方法(2択):

方法メリットデメリット
Python + launchd ローカルで完全制御可能 マシン起動依存
Google Apps Script クラウド自動実行、トリガー設定簡単 GAS の API 制限(実行時間 6 分)

推奨:GAS + Clasp(ローカル開発) → cloud.google.com で自動スケジュール

クロール対象 URL:

https://tabelog.com/tokyo/A1316/A131601/rstLst/

取得項目(18項目 + 補足5項目):

★ 一覧ページ取得: 店名・最寄り駅・ジャンル・価格帯・評価点・口コミ数・保存数(#1〜#10)
★ 詳細ページ取得: 住所・電話番号・営業時間・定休日・席数・個室・喫煙・支払い・駐車場・開店日(#2〜#18)

#項目名説明取得元(セレクタ)
1店名店舗の正式名称一覧: list-rst__name > aテキスト
2住所都道府県〜番地詳細: th「住所」next tdテキスト
3電話番号予約・問合せ用詳細: th「電話番号」next tdテキスト
4最寄り駅最寄り駅名(行政区域テキストより抽出)一覧: list-rst__area-genre テキストテキスト
5ジャンル業態カテゴリ(複数可)一覧: list-rst__area-genre テキストテキスト
6昼の価格帯ランチ価格帯(例:¥1,000〜¥1,999)一覧: c-rating-v3__time--lunchテキスト
7夜の価格帯ディナー価格帯(例:¥4,000〜¥4,999)一覧: c-rating-v3__time--dinnerテキスト
8評価点食べログ総合評価スコア一覧: c-rating__val--strong数値(小数第2位)
9口コミ数投稿された口コミの累計件数一覧: list-rst__rvw-count-num整数
10保存数「行きたい」保存数(人気・撤退リスク判定用)一覧: js-lower-viewed テキスト整数
11営業時間曜日別営業時間帯詳細: th「営業時間」next tdテキスト
12定休日定休日・不定休など詳細: th「定休日」next tdテキスト
13席数総席数(目安)詳細: th「席数」next td整数
14個室個室の有無・種類詳細: th「個室」next tdテキスト
15喫煙・禁煙喫煙ポリシー詳細: th「喫煙・禁煙」next tdテキスト
16支払い方法カード・電子マネー対応状況詳細: th「支払い」next tdテキスト
17駐車場駐車場の有無・台数詳細: th「駐車場」next tdテキスト
18開店日オープン年月(YYYY-MM-01 形式)詳細: th「オープン日」next td日付(YYYY-MM-01)

補足項目(メタデータ):

項目名説明生成方法
閉店フラグ閉店・営業終了の検出詳細: p.c-alert__message / a.rst-status-badge-red__text真偽値(True/False)
URL食べログ店舗ページ URL一覧: data-detail-url 属性URL テキスト
緯度地図プロット用(丁目レベル)住所 → Nominatim ジオコーディング数値(lat)
経度地図プロット用(丁目レベル)住所 → Nominatim ジオコーディング数値(lng)
取得日クロール実行日スクリプト実行時の日付(YYYY-MM-DD)日付テキスト
※ #1〜#10・URL は一覧ページから取得(リクエスト1回/ページ)。#2〜#4・#11〜#18・閉店フラグ は各店舗の詳細ページから取得(リクエスト1回/店舗、3〜6秒ランダム待機)。緯度・経度は住所を Nominatim(OSM)で変換。
ステップ2-3:CSV生成 → サマリデータ計算

CSV ファイル構造(全23フィールド):

# ファイル名: tabelog_meguro_YYYYMMDD.csv(UTF-8 BOM付き) 店名,住所,電話番号,最寄り駅,ジャンル,昼の価格帯,夜の価格帯,評価点,口コミ数,保存数,営業時間,定休日,席数,個室,喫煙・禁煙,支払い方法,駐車場,開店日,閉店フラグ,URL,緯度,経度,取得日 # データ例 リナシメント,東京都目黒区下目黒2-23-2,050-XXXX-XXXX,目黒駅,イタリアン,¥6,000〜¥7,999,¥10,000〜¥14,999,4.08,799,61724,火〜土 12:00-22:30,日曜,18,あり,禁煙,カード可,なし,2010-04-01,False,https://tabelog.com/tokyo/A1316/A131601/13012345/,35.631,139.715,2026-06-17

サマリデータ(自動計算):

📊 例:
- ジャンル別店舗数(イタリアン:45件、ラーメン:52件...)
- 営業時間別分布(18:00 営業開始:123件、19:00:98件...)
- 価格帯別の平均評価・保存数
- 閉店・新規開店の検出(前週比)
ステップ4:Airtable 連携

Airtable 構造(2テーブル):

テーブル 1:「店舗マスター」

毎週の全店舗データを蓄積。履歴管理で「保存数の推移」「営業状況の変化」を追跡

テーブル 2:「サマリ&分析」

ジャンル別、営業時間別、価格帯別の統計。コンサル資料生成用

連携方法:

Python script: 1. CSV 読み込み 2. Airtable API 経由でテーブル1に行追加 3. Airtable の automation で自動計算 → テーブル2 更新

Airtable API キー設定: REST API or Zapier で CSV → テーブル 自動投入

ステップ5:ダッシュボード&コンサル資料化

Airtable での可視化:

  • Grid ビュー — 全店舗のマスター表示・フィルター機能
  • Gallery ビュー — 店舗の評価ランキング・営業時間ごとの並び
  • Chart ビュー — ジャンル別店舗数、営業時間分布(棒グラフ)
  • Calendar ビュー — 「新規開店店舗」を日ごとに可視化

コンサル資料への転換:

Airtable のデータから「目黒の飲食店市場分析レポート」として PDF / HTML 自動生成。 提案先に共有する際は「この営業時間は空いています」「この業態が成功しやすい」 という根拠が一目瞭然。

技術スタック&環境
コンポーネントツール役割
クロールGAS / Python + BeautifulSoup食べログ自動取得
スケジューリングGAS Triggers / launchd週1回実行
CSV 処理pandas (Python) / GASデータ集計・サマリ計算
DBAirtableマスターデータ+履歴管理
ダッシュボードAirtable views / Looker可視化・分析
実装スケジュール(1日で完了)

⚡ 仕様決定後、ClaudeCode で 1 日で実装完了

時間タスク
午前 GAS スクリプト作成 & 食べログクロール実装(600件 CSV 取得)
午後 1 CSV からサマリデータ自動生成(ジャンル別、営業時間別、賃料別)
午後 2 Airtable テーブル設計 & CSV 自動投入テスト
翌週月曜 毎週 9:00 に自動実行開始

仕様決定のポイント(以下を明確にしてから実装に進みます):

  • 取得項目:何をクロールするか(店名、営業時間、評価 etc.)
  • 更新頻度:週 1 回でいいのか、リアルタイムが必要か
  • Airtable テーブル設計:マスター+サマリ の詳細構成
  • サマリ項目:どの切り口で集計するか(業態別、時間帯別 etc.)
進捗スケジュール
アクション
Week 1 GAS スクリプト作成 + 手動テスト(5 件)
Week 2 CSV 生成 + Airtable テーブル設計+初期連携
Week 3 サマリ計算ロジック実装+自動実行検証
Week 4 本番運用開始(全 627 件クロール+Airtable 反映)