【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}')