LoginSignup
1
5

More than 3 years have passed since last update.

HeartRails Express APIでエリア情報/都道府県情報/路線情報/駅情報/最寄駅情報を取得した際の備忘録(python)

Posted at

目的

HeartRails Express APIでエリア情報/都道府県情報/路線情報/駅情報/最寄駅情報を取得した際の備忘録(python)

http://express.heartrails.com

準備

リクエスト送信モジュールをインストール

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のようなものを作った

1
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
5