食べログからGoogleマップに移行するため🔖保存済み一覧をCSVで出力する


食べログでは高評価だったのに行ってみたらガッカリということが何度もあったので、行きたい店を食べログで管理することをやめようと思いました。移行先はGoogleマップです。「どこかいい店ないかな」って探すときって、地図で探すほうが便利ことが多いんですよね。いちいち食べログのアプリ立ち上げて何回もポチポチするよりGoogleマップの方が圧倒的に楽。というわけで、食べログで保存済みのお店情報にGoogleマップでの検索URLを付加してCSVに出力してみます。

環境

  • Python3
  • Mac
  • Google Chrome

あとはSeleniumとクリップボードを扱えるライブラリをpipで入れとく必要があります。

$ pip install selenium pyperclip

OSのバージョンにもよりますが、MacにプリインストールされているPythonを使用する場合は pip3 とする必要があるかも。このあたりは適宜読み替えてください。

goodbye-tabelog-hello-google-map.py

こちらがそのソースコードです。2020.1.25版

なお食べログにログインする必要があるのですが、私はFacebook認証でログインしているので、コードはそのようになっています。他のログイン方法を使用している場合は適宜編集して使用してください。

import csv
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException
import pyperclip


FACEBOOK_ID = 'FacebookのユーザーID'
FACEBOOK_PASSWORD = 'Facebookのパスワード'


driver = webdriver.Chrome(options=Options())
driver.get('https://tabelog.com/')
# Facebookでログイン
driver.find_element_by_class_name('js-open-login-modal').click()
driver.find_element_by_class_name('p-login-btn--facebook').click()
driver.find_element_by_id('email').send_keys(FACEBOOK_ID)
driver.find_element_by_id('pass').send_keys(FACEBOOK_PASSWORD)
driver.find_element_by_id('loginbutton').click()
# 保存済みページへ
driver.find_element_by_class_name('p-user-menu__target--hozon').click()

restaurants = []
while True:
    # 「店舗情報をコピー」ボタンの一覧を取得する
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.CLASS_NAME, 'js-copy-restaurant-info-to-clipboard')))
    clipboard_buttons = driver.find_elements_by_class_name('js-copy-restaurant-info-to-clipboard')
    for button in clipboard_buttons:
        button.click()
        # 店舗情報をクリップボードから取得(1行目から お店の名前,[電話番号],住所,食べログURL)
        data = pyperclip.paste().split('\n')
        if len(data) < 4:
            # 電話番号がない場合はその箇所に空文字を挿入しておく
            data.insert(1, '')
        # Googleマップでの検索URL
        map_url = 'https://www.google.co.jp/maps/search/' + ' '.join(data[0:3])
        data.append(map_url)
        restaurants.append(data)
    try:
        # 次ページへ
        driver.find_element_by_class_name('c-pagination__arrow--next').click()
    except NoSuchElementException:
        break

# CSVに出力する
with open('result.csv', 'wt', encoding='utf_8_sig') as f:
    writer = csv.writer(f, quoting=csv.QUOTE_ALL)
    writer.writerows(restaurants)

print('終了しました')
driver.quit()

$ python goodbye-tabelog-hello-google-map.py で実行すると、Google Chromeが自動で起動しスクレイピングが始まります。headlessにすると上手く動かない箇所があったのでやめました。

結果のCSVはカレントディレクトリに result.csv として保存します。文字コードはBOM付きUTF8にしてますので、そのままExcelで開くことができます。出力内容は

  1. お店の名前
  2. 電話番号
  3. 住所
  4. 食べログのURL
  5. Googleマップでの検索URL

となっており、最終列のGoogleマップでの検索URLを開くと(基本的には)そのお店の情報がナレッジパネルに開かれるようになってまので、移行が楽にできると思います。

余談

実は最初はGoogleマップで保存し、食べログの保存を削除するところまで自動でやってたのですが、どうもGoogleマップでの保存でビミョーな挙動があったので、公開するのはやめておきました。リクエストがあればそちらも公開しようかなと思ったり。

300件ほどあった行きたい店をマップにプロットするのはなかなか爽快ですよ!でもこんなにたくさん行けるわけないので、今後は本当に行きたい店だけ登録しようと思った今日この頃です。

関連する記事


コメントする

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください