お父さん必見！週末お出かけ候補リストをかんたん作成(Python、Directions API)

#本投稿の背景

家族でお出かけする際、
毎回どこに行くかを探すのに迷いますし、行き先を決めるのに時間がかかりますよね。



**■自分が行き先を決める時に行うフロー**

　**１. いこーよ [「https://iko-yo.net/」](https://iko-yo.net/)の [関東の週間ランキング](https://iko-yo.net/rankings/regions/3/weekly)をみる**
　**２. 行き先スポットの詳細情報を確認**
　**３. ２.で確認した行き先スポットを 自宅からgoogleマップで
　　　　　距離、所要時間(Googleマップで出発時刻を設定)を調べる**
　**４. ３.で距離、予想時間が長い場合は、次の候補を探す**
　**※１～４ の繰り返しをして、行き先を検索してます**

![image.png](https://qiita-image-store.s3.amazonaws.com/0/261475/9f54dd1a-0f83-c2b5-8848-71d0f194f1d5.png)




この行き先スポットが「いい」と思って、自宅からの所要時間を見ると2時間以上時間が掛かったり、
さっきのスポットがよかったと思って見返そうとしたら、ブラウザのタブがたくさんあってどれだっけ？とタブを探したりして、無駄に時間がかかっていました。


その無駄な時間をなくすため、自分でリストを作ればいいと思いました。


#本投稿で実現すること

１．お出かけスポットを取得
２．自宅から各スポットの所要時間を取得

⇒１．はPythonのスクレイピング
　２．はGoogle Map Platform の Directions API
　を使用します


##作成する 週末お出かけ候補リスト のイメージ

いこーよのWebページをスクレイピングして、その情報から Directions APIを使用して出発地点からの距離、所要時間を算出したリストをPythonで作成します
![image.png](https://qiita-image-store.s3.amazonaws.com/0/261475/4573fccf-9205-2a5b-7a91-8087c1577671.png)









#事前準備(Google Map Platform で APIキーを申請)

Google Map Platform で Directions APIを使用する場合、KEY を申請する必要があります。

APIを使用する KEY の取得申請方法とGoogle MAP APIの使用方法、Directions APIのパラメータ説明、Pythonスクリプトのサンプルは、以下の投稿でまとめましたのでこちらを参照ください

[Directions API(Google Maps Platform) をコールしてルート間の距離と所要時間をPythonで取得する](https://qiita.com/kngsym2018/items/15f19a88ea37c1cd3646)

  


##Pythonスクリプト(Google Map Platform Directions API を使用)

```python:getspots.py
import urllib.request
from bs4 import BeautifulSoup
import urllib.request, json
import urllib.parse
import datetime
import csv

def getspotdata(dep_time,region,origin,csvpath):

    #行き先をURLを格納する配列(リスト)
    arrspot= []

    #いこーよの週間ランキングは1ページ 10件 x 3なので
    #これを3回繰り返す
    for i in range(1, 4):
        
        #URLを設定
        url = "https://iko-yo.net/rankings/regions/" + str(region) + "/weekly?page=" + str(i)

        #URLリンクを開く
        response = urllib.request.urlopen(url)
        html = response.read()

        # htmlをBeautifulSoupで扱う
        soup = BeautifulSoup(html, "html.parser")

        # a 要素全てをリストに格納
        span = soup.find_all("a")

        #取得件数のカウント件数の初期化
        i = 0
        
        #a 要素全てを確認して、名称とURLを取得
        for tag in span:
        
            #a 要素にある classの値を取得
            tagstring = tag.get("class")
            
            #class がないのはNone で返るのでその対応
            if tagstring is not None:
            
                #c-link--underlineがあるかの判断
                if tagstring.count("c-link--underline") > 0:
                
                    target = tag.string
                
                    #口コミ　○○件 のclassも"c-link--underline" なので除外
                    if target.find("口コミ") == -1 :
                    
                        #取得件数のカウント
                        i += 1
                    
                        #リストに行き先名、情報リンクを取得、格納する
                        #print(tag.string)
                        #print(tag.get("href"))
                        arrspot.append([tag.string, "https://iko-yo.net" + tag.get("href")])                
                    
                        #1ページあたり10件の情報なので、10件取得したら処理を抜ける
                        if i > 9:
                            break
                        
                        
    #Google Maps Platform Direction API から情報取得

    #Google MapsDdirections API endpoint
    endpoint = 'https://maps.googleapis.com/maps/api/directions/json?'
    api_key = '<申請したAPIキーを設定>'

    #google map url 
    googlemap_api = "https://www.google.com/maps/dir/?api=1"

    #出発時間をいれたURL
    googlemap_uncertify = "https://www.google.com/maps/dir/"

    #UNIX時間の算出
    dtime = datetime.datetime.strptime(dep_time, '%Y/%m/%d %H:%M')
    plus_jst = dtime + datetime.timedelta(hours=9) #JSTなので +9時間
    unix_time = int(dtime.timestamp()) #UNIX時間を算出
    plus_jst  = int(plus_jst.timestamp()) #UNIX時間をJSTで算出 ※GoogleMapのURLに設定する
    
    
    #現在時間のUNIX時間算出
    now = datetime.datetime.now()
    #now = now + datetime.timedelta(hours=9) #JSTなので +9時間
    now_ts = int(now.timestamp())    
    
    #指定した時間が現在よりも過去の場合、現在時間を設定
    if now_ts > unix_time:
        unix_time = now_ts   
        dep_time = datetime.datetime.now().strftime('%Y/%m/%d %H:%M')

    #csv出力用リスト
    datalist=[]
    datalist.append(['ランキング','行き先','行き先情報リンク','距離','所要時間','GoogleMapリンク','出発時間(' + str(dep_time) + ')設定 GoogleMapリンク'])


    #１～30位までの行き先の所要時間を Direction API から取得する
    ranking =0

    for s in arrspot:
        
        #目的地を取得
        destination=s[0].replace(' ','+')
        
        #Building the URL for the request
        nav_request = 'language=ja&origin={}&destination={}&departure_time={}&key={}'.format(origin,destination,unix_time,api_key)
        nav_request = urllib.parse.quote_plus(nav_request, safe='=&')
        request = endpoint + nav_request

        #Sends the request and reads the response.
        response = urllib.request.urlopen(request).read()   
        
        #Loads response as JSON
        directions = json.loads(response)
        
        for key in directions['routes']:
            #print(key) # titleのみ参照
            #print(key['legs']) 
            for key2 in key['legs']:
                print(destination + " : " + key2['duration_in_traffic']['text'])               
                
                #Google Maps URLs を参考にしたURL
                googlemapurl_p = '&origin={}&destination={}&travelmode=driving'.format(origin,destination)
                googlemap_url = googlemap_api + googlemapurl_p

                #出発時間を設定したURL 
                googlemap_uncertify_p ='{}/{}/data=!4m6!4m5!2m3!6e0!7e2!8j{}!3e0'.format(origin,destination,plus_jst)
                googlemap_url_uncertify = googlemap_uncertify + googlemap_uncertify_p
                
                #行き先リンク
                #'=HYPERLINK を埋め込む設定
                spoturl='=HYPERLINK("' + s[1] +'","リンク")'
                gglmap ='=HYPERLINK("' + googlemap_url +'","リンク")'
                gglmap_u ='=HYPERLINK("' + googlemap_url_uncertify +'","リンク")'
                ranking += 1
                
                datalist.append([ranking,s[0], spoturl,key2['distance']['text'],key2['duration_in_traffic']['text'], gglmap,gglmap_u]) 

    #CSV出力
    csvpath = r"'"+ csvfile + "'"
    csvpath = csvpath.replace("'","")

    with open(csvpath, 'w') as file:
        writer = csv.writer(file, lineterminator='\n')
        writer.writerows(datalist)

if __name__ == '__main__':

    #いつ出発するか
    dep_time = input('いつ出発?(過去時間は現在時刻に変換します): yyyy/mm/dd hh:mm 形式　例)2018/10/06 10:00 ＞ ')

    #どの地域か
    region = input('地域を入力：例)  1:北海道:東北、2:北陸:甲信越、3:関東、4:東海、5:関西、6:中国:四国、7:九州:沖縄＞ ')

    #どこから出発するかを入力
    origin = input('どこから出発?: 例)東京駅、大宮駅 等 ＞ ').replace(' ','+')
    
    #お出かけスポット一覧のcsv名
    csvfile = input('お出かけスポット一覧出力csv名: 例)d:\list.csv ＞ ')
    
    
    getspotdata(dep_time,region,origin,csvfile)
    
```
Pythonスクリプトの実行方法は、 [Windows環境でPythonスクリプト(.py)の実行方法](https://qiita.com/kngsym2018/items/15f19a88ea37c1cd3646)
 を参考ください。

##Pythonスクリプト(getspots.py)で作成した「週末お出かけ候補リスト」CSVファイル

**※Pythonスクリプトを実行時に入力した条件です。**
　・いつ出発するか：2018/10/13 10:00
　・どの地域か：3 
　・どこから出発するか：東川口駅
　・お出かけスポット一覧のcsv名:d:\spotlist.csv 

以下、条件で出力された「週末お出かけ候補リスト」CSVファイル


```
ランキング,行き先,行き先情報リンク,距離,所要時間,GoogleMapリンク,出発時間(2018/10/13 10:00)設定 GoogleMapリンク
1,ツインリンクもてぎ,"=HYPERLINK(""https://iko-yo.net/facilities/1552"",""リンク"")",125 km,1時間49分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=ツインリンクもてぎ&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/ツインリンクもてぎ/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
2,MORI Building DIGITAL ART MUSEUM: EPSON teamLab Borderless,"=HYPERLINK(""https://iko-yo.net/facilities/101198"",""リンク"")",42.7 km,46分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=MORI+Building+DIGITAL+ART+MUSEUM:+EPSON+teamLab+Borderless&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/MORI+Building+DIGITAL+ART+MUSEUM:+EPSON+teamLab+Borderless/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
3,東京あそびマーレ,"=HYPERLINK(""https://iko-yo.net/facilities/104493"",""リンク"")",63.9 km,1時間43分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=東京あそびマーレ&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/東京あそびマーレ/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
4,日本科学未来館,"=HYPERLINK(""https://iko-yo.net/facilities/175"",""リンク"")",43.1 km,47分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=日本科学未来館&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/日本科学未来館/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
5,リトルプラネット ららぽーと新三郷,"=HYPERLINK(""https://iko-yo.net/facilities/111732"",""リンク"")",17.1 km,31分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=リトルプラネット+ららぽーと新三郷&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/リトルプラネット+ららぽーと新三郷/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
6,ファンタジーキッズリゾート海老名,"=HYPERLINK(""https://iko-yo.net/facilities/750"",""リンク"")",79.6 km,1時間55分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=ファンタジーキッズリゾート海老名&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/ファンタジーキッズリゾート海老名/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
7,Studio Make-Over 武蔵浦和 In My Home-ZooAdventure,"=HYPERLINK(""https://iko-yo.net/facilities/106470"",""リンク"")",13.3 km,21分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=Studio+Make-Over+武蔵浦和+In+My+Home-ZooAdventure&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/Studio+Make-Over+武蔵浦和+In+My+Home-ZooAdventure/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
8,クロスポ　千葉浜野店,"=HYPERLINK(""https://iko-yo.net/facilities/66158"",""リンク"")",64.5 km,1時間11分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=クロスポ　千葉浜野店&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/クロスポ　千葉浜野店/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
9,東京ドームシティ  ASOBono！（アソボーノ）,"=HYPERLINK(""https://iko-yo.net/facilities/3879"",""リンク"")",29.3 km,33分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=東京ドームシティ++ASOBono！（アソボーノ）&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/東京ドームシティ++ASOBono！（アソボーノ）/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
10,チームラボ 学ぶ！未来の遊園地 ららぽーと富士見店,"=HYPERLINK(""https://iko-yo.net/facilities/24539"",""リンク"")",24.5 km,45分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=チームラボ+学ぶ！未来の遊園地+ららぽーと富士見店&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/チームラボ+学ぶ！未来の遊園地+ららぽーと富士見店/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
11,ギャラクシティ,"=HYPERLINK(""https://iko-yo.net/facilities/17772"",""リンク"")",15.2 km,29分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=ギャラクシティ&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/ギャラクシティ/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
12,国立科学博物館,"=HYPERLINK(""https://iko-yo.net/facilities/893"",""リンク"")",23.2 km,39分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=国立科学博物館&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/国立科学博物館/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
13,ファンタジーキッズリゾート武蔵村山,"=HYPERLINK(""https://iko-yo.net/facilities/61217"",""リンク"")",78.0 km,1時間25分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=ファンタジーキッズリゾート武蔵村山&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/ファンタジーキッズリゾート武蔵村山/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
14,アネビートリムパーク　お台場店,"=HYPERLINK(""https://iko-yo.net/facilities/22770"",""リンク"")",42.5 km,45分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=アネビートリムパーク　お台場店&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/アネビートリムパーク　お台場店/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
15,軽井沢おもちゃ王国,"=HYPERLINK(""https://iko-yo.net/facilities/168"",""リンク"")",186 km,2時間46分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=軽井沢おもちゃ王国&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/軽井沢おもちゃ王国/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
16,森の空中あそび「パカブ」,"=HYPERLINK(""https://iko-yo.net/facilities/89470"",""リンク"")",108 km,2時間23分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=森の空中あそび「パカブ」&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/森の空中あそび「パカブ」/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
17,trampon(トランポン),"=HYPERLINK(""https://iko-yo.net/facilities/93345"",""リンク"")",77.8 km,2時間0分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=trampon(トランポン)&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/trampon(トランポン)/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
18,手裏剣道場 新宿忍者からくり屋敷,"=HYPERLINK(""https://iko-yo.net/facilities/69543"",""リンク"")",30.6 km,45分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=手裏剣道場+新宿忍者からくり屋敷&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/手裏剣道場+新宿忍者からくり屋敷/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
19,レゴランド・ディスカバリー・センター東京,"=HYPERLINK(""https://iko-yo.net/facilities/15693"",""リンク"")",42.2 km,45分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=レゴランド・ディスカバリー・センター東京&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/レゴランド・ディスカバリー・センター東京/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
20,宝石探し　トレジャーストーンパーク,"=HYPERLINK(""https://iko-yo.net/facilities/22338"",""リンク"")",158 km,2時間0分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=宝石探し　トレジャーストーンパーク&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/宝石探し　トレジャーストーンパーク/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
21,キッズキャッスル三郷,"=HYPERLINK(""https://iko-yo.net/facilities/19401"",""リンク"")",14.5 km,23分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=キッズキャッスル三郷&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/キッズキャッスル三郷/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
22,オービィ横浜,"=HYPERLINK(""https://iko-yo.net/facilities/20093"",""リンク"")",65.8 km,1時間15分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=オービィ横浜&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/オービィ横浜/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
23,遊園地 浅草花やしき,"=HYPERLINK(""https://iko-yo.net/facilities/202"",""リンク"")",27.4 km,38分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=遊園地+浅草花やしき&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/遊園地+浅草花やしき/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
24,京王れーるランド,"=HYPERLINK(""https://iko-yo.net/facilities/1654"",""リンク"")",59.5 km,1時間33分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=京王れーるランド&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/京王れーるランド/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
25,キドキドよみうりランド店,"=HYPERLINK(""https://iko-yo.net/facilities/16493"",""リンク"")",51.8 km,1時間19分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=キドキドよみうりランド店&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/キドキドよみうりランド店/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
26,トランポランドsaitama（トランポランド埼玉）,"=HYPERLINK(""https://iko-yo.net/facilities/26869"",""リンク"")",24.0 km,44分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=トランポランドsaitama（トランポランド埼玉）&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/トランポランドsaitama（トランポランド埼玉）/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
27,わなびばきっずぱーく３３３,"=HYPERLINK(""https://iko-yo.net/facilities/103019"",""リンク"")",32.8 km,48分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=わなびばきっずぱーく３３３&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/わなびばきっずぱーく３３３/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
28,カンドゥー,"=HYPERLINK(""https://iko-yo.net/facilities/20092"",""リンク"")",43.7 km,49分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=カンドゥー&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/カンドゥー/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
29,多摩六都科学館,"=HYPERLINK(""https://iko-yo.net/facilities/1617"",""リンク"")",30.4 km,58分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=多摩六都科学館&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/多摩六都科学館/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
30,NHKスタジオパーク（エヌエイチケイスタジオパーク）,"=HYPERLINK(""https://iko-yo.net/facilities/200"",""リンク"")",32.8 km,46分,"=HYPERLINK(""https://www.google.com/maps/dir/?api=1&origin=東川口駅&destination=NHKスタジオパーク（エヌエイチケイスタジオパーク）&travelmode=driving"",""リンク"")","=HYPERLINK(""https://www.google.com/maps/dir/東川口駅/NHKスタジオパーク（エヌエイチケイスタジオパーク）/data=!4m6!4m5!2m3!6e0!7e2!8j1539424800!3e0"",""リンク"")"
```

上記、「週末お出かけ候補リスト」CSVをクリックすると
Excelが起動して以下の情報を確認できます。

また、CSV作成時にハイパーリンク(いこーよ基本情報、GoogleMapのリンク)を設定しているので、[リンク]の文字をクリックすると各情報のページが開くように設定しています。

#「週末お出かけ候補リスト」csvファイルをクリックしてExcelが起動したサンプル

![image.png](https://qiita-image-store.s3.amazonaws.com/0/261475/e208e40d-b254-85c2-2c43-72cc794e8177.png)


| 列名 | 説明 |
|:--|:--|
|ランキング|いこーよの1～30位のランキング|
|行き先|行き先スポット名|
|行き先情報リンク|クリックすると「いこーよ」の基本情報へとびます|
|距離|Python実行時に入力した出発地からの距離(Directions APIより取得)|
|所要時間|Python実行時に入力した出発時間 を考慮した 出発地点から目的地までの時間(Directions APIより取得)|
|GoogleMapリンク|出発地、目的地、車で移動を設定したGoogleマップのURL|
|出発時間を設定した GoogleMapリンク|出発地、目的地、車で移動、出発時間を設定した GoogleマップのURL|

**Pythonスクレイピング、Directions APIを組み合わせて、実現したい「週末お出かけ候補リスト」ができました！**


#Googleマップ URL設定

GoogleマップのURLリンクの作成方法は以下のURLを参考にしました。
https://developers.google.com/maps/documentation/urls/guide#directions-action

上記ドキュメントでは、出発時刻についてのパラメータが記載されていないので、
今回、実施したいことで設定できるのは、origin(出発地)、destination(目的地)、travelmode(車、徒歩、電車)しか設定できません。

また、ドキュメントには
api=1 を設定しないとパラメータが無視されるとあります

＞Important: The parameter api=1 identifies the version of Maps URLs this URL is intended for. 
＞This parameter is required in every request. 
＞The only valid value is 1. If api=1 is NOT present in the URL, all parameters are ＞ignored and the default Google Maps app will launch, 
＞either in a browser or the Google Maps mobile app, depending on the platform in use(for example, https://www.google.com/maps).


<BR>
Googleマップを開いたとき、出発時刻を設定するのはしんどいので
「出発時間を設定した GoogleMapのURL」は、外部サイトを参考にしてます。
 https://mstickles.wordpress.com/2015/06/23/gmaps-urls-diropt3/

※上記、api=1 としてないので、そのうち　パラメータが無視される可能性がありますので注意


#参考リンク


[Directions API(Google Maps Platform) をコールしてルート間の距離と所要時間をPythonで取得する](https://qiita.com/kngsym2018/items/15f19a88ea37c1cd3646)

[Windows環境でPythonスクリプト(.py)の実行方法 を参考ください。](https://qiita.com/kngsym2018/items/15f19a88ea37c1cd3646)

[Googleマップ URLリンクの作成方法](https://developers.google.com/maps/documentation/urls/guide#directions-action)

[Googleマップ URLリンクの作成方法　出発時間指定などの方法](https://mstickles.wordpress.com/2015/06/23/gmaps-urls-diropt3/)