#APIとは?
他社が提供するサービス内の**"情報"or"機能"**を扱えるようにする仕組み
#0:Rakuten Developersにアクセス
①Rakuten Developersにログイン
(楽天アカウントがない方は登録をお願いします。)
②"アプリID"を発行
③"API一覧"をクリック
④"楽天トラベル系API"の中にある"楽天トラベル施設検索API"をクリック
上図のページに楽天トラベルAPIの仕様が細かく書かれているので、ざっと目を通してみて下さい。
(良く分からない方は以下のソースコードをみて感覚を掴んでみてください!)
#1:ソースコード
import pandas as pd
import requests
REQUEST_URL = "https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426"
#0-②でコピーしたIDを貼り付けてください
APP_ID = "????????????????????"
今回は日本・沖縄・那覇市にある施設を検索してみたいと思います。
params = {
"format":"json",
"largeClassCode":"japan",
"middleClassCode":"okinawa",
"smallClassCode":"nahashi",
"applicationId":APP_ID
}
res = requests.get(REQUEST_URL, params)
print(res)
ここで、< Response [200] >
と出力されれば、リクエストに対してのレスポンスが成功しています!
次に取得したjson形式のレスポンスをみましょう。
print(result)
上図から、
・全ページ数は15ページ
・今回は1ページ目だけを取得
・今回は1~30の施設情報を取得
(このソースコードではpageを指定していないので、1ページ目だけ取得することになっています。)
以上より、
**"15ページの情報"**があることが分かったので、全てを取得してデータフレームに格納していきます!
def rakuten_api():
df = pd.DataFrame()
index_num = 0
#ページ数(1~15ページ)
for page in range(1,16):
params = {
"format":"json",
"largeClassCode":"japan",
"middleClassCode":"okinawa",
"smallClassCode":"nahashi",
"page": page,
"applicationId":APP_ID
}
res = requests.get(REQUEST_URL, params)
#レスポンスの中身を取得
result = res.json()
hotels = result["hotels"]
for hotel in hotels:
hotel_info = hotel["hotel"][0]["hotelBasicInfo"]
_df = pd.DataFrame(hotel_info, index=[index_num])
index_num+=1
df = df.append(_df)
return df
df = rakuten_api()
これで、前15ページの施設情報をデータフレームに格納できました!
ここで、データフレームに格納されているカラム名の一覧をみましょう
print(df.columns)
出力結果>>>
Index(['hotelNo', 'hotelName', 'hotelInformationUrl', 'planListUrl',
'dpPlanListUrl', 'reviewUrl', 'hotelKanaName', 'hotelSpecial',
'hotelMinCharge', 'latitude', 'longitude', 'postalCode', 'address1',
'address2', 'telephoneNo', 'faxNo', 'access', 'parkingInformation',
'nearestStation', 'hotelImageUrl', 'hotelThumbnailUrl', 'roomImageUrl',
'roomThumbnailUrl', 'hotelMapImageUrl', 'reviewCount', 'reviewAverage',
'userReview'],
dtype='object')
ここから、自分が必要なカラム名だけを抽出します。
そして、csvファイルに出力させて完成です!!
df[['hotelName','hotelInformationUrl','hotelMinCharge','telephoneNo','reviewAverage']].to_csv("hotel.csv",index=False)
#2:最後に
今回は楽天トラベル系APIを利用しましたが、
楽天ブックス系APIや楽天レシピ系APIなども豊富にあるので、それらを組み合わせて自分好みのアプリケーションも作れそうです!
その際にはまた、記事にしたいと思います!!