【Python】Web APIサンプル
処理概要
一般公開されているWeb APIを使ったサンプルコード。
ホットペッパーグルメサーチAPI
処理内容
ホットペッパーグルメサーチAPIでお店の検索とCSV出力をする
- キーワード検索を実行する
- 検索結果を整形する
- 結果をCSVファイルに出力する
事前準備
- リクルートWEBサービスのページでAPIキーを発行しておく
- https://webservice.recruit.co.jp/
APIリファレンス
コード
import requests
import pandas as pd
# ----------------------------------------
# 定数の設定
# ----------------------------------------
API_URL = 'http://webservice.recruit.co.jp/hotpepper/gourmet/v1/'
API_KEY = '取得したAPIキーを入力する'
# ----------------------------------------
# 検索クエリの設定
# ----------------------------------------
params = {
'key': API_KEY,
'keyword': '代々木上原',
'count': 20,
'format': 'json'
}
# ----------------------------------------
# リクエストの実行
# ----------------------------------------
try:
res = requests.get(API_URL, params=params)
if res.status_code == 200:
result = res.json()
# shopのリスト情報だけ格納し直す
items = result['results']['shop']
df = pd.DataFrame(items)
# 必要なカラムのみ抽出する
df = df[['name', 'address', 'non_smoking']]
# ----------------------------------------
# CSVに出力する
# ----------------------------------------
df.to_csv('hotpepper_shop_list.csv',index=False)
else:
print(f'リクエストが失敗しました: {res.status_code}')
except requests.exceptions.RequestException as e:
print(f'リクエストエラーが発生しました: {e}')
except Exception as e:
print(f'エラーが発生しました: {e}')
楽天ブックス総合検索API
処理内容
楽天ブックス総合検索APIでの商品検索と取得データの操作サンプル
- キーワード検索を実行する
- 検索結果を整形する
- pandasを利用したデータの確認と操作を行う
事前準備
- Rakuten WebserviceのページでアプリIDを発行しておく
- https://webservice.rakuten.co.jp/documentation/books-total-search
API詳細ページ
コード
import requests
import pandas as pd
# ----------------------------------------
# 定数の設定
# ----------------------------------------
API_URL = 'https://app.rakuten.co.jp/services/api/BooksTotal/Search/20170404'
APP_ID = '取得したアプリIDを入力する'
# ----------------------------------------
# 検索クエリの設定
# ----------------------------------------
params = {
'applicationId': APP_ID,
'format': 'json',
'keyword': '荒木飛呂彦'
}
# ----------------------------------------
# リクエストの実行
# ----------------------------------------
try:
res = requests.get(API_URL, params)
if res.status_code == 200:
result = res.json()
# itemsのリスト情報だけ格納し直す
items = result['Items']
# そのままデータフレームに格納するとすべて1カラムに入ってしまうため編集する
items = [item['Item'] for item in items]
df = pd.DataFrame(items)
# 必要なカラムのみ抽出する
df = df[['title', 'itemCaption', 'itemPrice', 'availability']]
# カラム名を変更する
new_columns = ['商品', 'キャッチコピー', '価格', '販売可能']
df.columns = new_columns
# データを商品名で並び替える
df.sort_values('商品', ascending=False)
# 統計量を確認する
df.describe()
# データを抽出する
df[df['価格'] > 2000]
else:
print(f'リクエストが失敗しました: {res.status_code}')
except requests.exceptions.RequestException as e:
print(f'リクエストエラーが発生しました: {e}')
except Exception as e:
print(f'エラーが発生しました: {e}')