目的
HeartRails Express APIでエリア情報/都道府県情報/路線情報/駅情報/最寄駅情報を取得した際の備忘録(python)
準備
リクエスト送信モジュールをインストール
pip install requests
テスト
エリア情報取得 API
デフォルトのエリアを取得
sample.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
url = 'http://express.heartrails.com/api/json?method=getAreas'
ret = requests.get(url)
ret_json = json.loads(ret.text)
print(ret_json)
$ python sample1.py
{'response': {'area': ['北海道', '東北', '関東', '中部', '近畿', '中国', '四国', '九州']}}
都道府県情報取得 API
デフォルトの都道府県名を取得
sample.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
url = 'http://express.heartrails.com/api/json?method=getPrefectures'
ret = requests.get(url)
ret_json = json.loads(ret.text)
print(ret_json)
$ python sample.py
{'response': {'prefecture': ['北海道', '青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県', '茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都', '神奈川県', '新潟県', '富山県', '石川県', '福井県', '山梨県', '長野県', '岐阜県', '静岡県', '愛知県', '三重県', '滋賀県', '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県', '鳥取県', '島根県', '岡山県', '広島県', '山口県', '徳島県', '香川県', '愛媛県', '高知県', '福岡県', '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', '鹿児島県', '沖縄県']}}
路線情報取得 API
ex. prefecture=大阪府の路線情報を取得
sample.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
url = 'http://express.heartrails.com/api/json?method=getLines&prefecture=大阪府'
ret = requests.get(url)
ret_json = json.loads(ret.text)
print(ret_json)
print(ret_json["response"]["line"][0])
print(len(ret_json["response"]["line"]))
$ python sample.py
{'response': {'line': ['JR京都線', 'JR大和路線', 'JR大阪環状線', 'JR東西線', 'JR桜島線', 'JR片町線', 'JR神戸線', 'JR福知山線', 'JR関西空港線', 'JR阪和線', '京阪交野線', '京阪本線', '京阪中之島線', '北大阪急行', '南海多奈川線', '南海本線', '南海汐見橋線', '南海空港線', '南海高師浜線', '南海高野線', '大阪モノレール', '大阪モノレール彩都線', '大阪中央線', '大阪千日前線', '大阪南港ポートタウン線', '大阪四つ橋線', '大阪堺筋線', '大阪御堂筋線', '大阪谷町線', '大阪長堀鶴見緑地線', '山陽新幹線', '東海道新幹線', '水間鉄道', '泉北高速鉄道', '能勢電鉄妙見線', '近鉄けいはんな線', '近鉄信貴線', '近鉄南大阪線', '近鉄大阪線', '近鉄奈良線', '近鉄西信貴ケーブル線', '近鉄道明寺線', '近鉄長野線', '阪堺電軌上町線', '阪堺電軌阪堺線', '阪急京都本線', '阪急千里線', '阪急宝塚本線', '阪急神戸本線', '阪急箕面線', '阪神本線', '阪神なんば線', '大阪今里筋線', 'おおさか東線']}}
JR京都線
54
駅情報取得 API
ex.「name=大阪」を入力
sample.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
url = 'http://express.heartrails.com/api/json?method=getStations&name=大阪'
ret = requests.get(url)
ret_json = json.loads(ret.text)
print(ret_json)
$ python sample.py
{'response': {'station': [{'name': '大阪', 'prefecture': '大阪府', 'line': 'JR京都線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'prev': '新大阪', 'next': None}, {'name': '大阪', 'prefecture': '大阪府', 'line': 'JR大阪環状線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'prev': None, 'next': '福島'}, {'name': '大阪', 'prefecture': '大阪府', 'line': 'JR神戸線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'prev': None, 'next': '塚本'}, {'name': '大阪', 'prefecture': '大阪府', 'line': 'JR福知山線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'prev': None, 'next': '尼崎'}]}}
最寄駅情報取得 API
ex.大阪の緯度経度(x=135.495188, y=34.702398)を入力
sample.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json
import requests
url = 'http://express.heartrails.com/api/json?method=getStations&x=135.495188&y=34.702398'
ret = requests.get(url)
ret_json = json.loads(ret.text)
print(ret_json)
$ python sample.py
{'response': {'station': [{'name': '大阪', 'prefecture': '大阪府', 'line': 'JR京都線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'distance': '00m', 'prev': '新大阪', 'next': None}, {'name': '大阪', 'prefecture': '大阪府', 'line': 'JR大阪環状線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'distance': '00m', 'prev': None, 'next': '福島'}, {'name': '大阪', 'prefecture': '大阪府', 'line': 'JR神戸線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'distance': '00m', 'prev': None, 'next': '塚本'}, {'name': '大阪', 'prefecture': '大阪府', 'line': 'JR福知山線', 'x': 135.495188, 'y': 34.702398, 'postal': '5300001', 'distance': '00m', 'prev': None, 'next': '尼崎'}, {'name': '梅田', 'prefecture': '大阪府', 'line': '阪神本線', 'x': 135.496745, 'y': 34.701242, 'postal': '5300001', 'distance': '190m', 'prev': '福島', 'next': None}, {'name': '梅田', 'prefecture': '大阪府', 'line': '大阪御堂筋線', 'x': 135.497496, 'y': 34.703765, 'postal': '5300017', 'distance': '260m', 'prev': '中津', 'next': '淀屋橋'}, {'name': '西梅田', 'prefecture': '大阪府', 'line': '大阪四つ橋線', 'x': 135.495802, 'y': 34.699642, 'postal': '5300001', 'distance': '310m', 'prev': None, 'next': '肥後橋'}]}}
Error対策
$ python sample3.py
{'response': {'error': "Area '%E5%A4%A7%E9%98%AA%E5%BA%9C' not found."}}
HTTPリクエストパラメータが間違っていると上記エラーが出る
参考
http://express.heartrails.com
路線図とかのAPIを使ってみた
乗換案内オープンAPIをアプリでも使う
駅すぱあとWebサービスでWebAPIを使ってみる
乗換案内オープンAPI仕様書
Google Maps APIで任意の住所から最寄り駅までの時間を取得する
公共機関や関連サービスが提供するAPI 20選
オープンデータのメモ書き
気象庁のデータをJSON化するAPIのようなものを作った