LoginSignup
97
97

More than 3 years have passed since last update.

PythonでWeb APIを叩く

Posted at

PythonでHTTPにアクセスする方法

  • urllibライブラリを使う
    • 標準で搭載
  • Requestsライブラリを使う
    • 要インストール。こちらの方がシンプルにコードを書ける。

今回は、Requestsライブラリを使ってREST形式のWeb APIを扱います。

HTTPメソッド

使う前に HTTPメソッド/REST API について簡単に触れておきます。
クライアントからサーバーに対して行うリクエストの種類をメソッドと呼び、基本的には以下の8種類があります。

メソッド 説明
GET リソースの取得
HEAD リソースのHTTPヘッダーのみを取得
POST クライアントからサーバにデータを送る
PUT リソースを保存
DELETE リソースの削除
CONNECT サーバとの間にトンネルを確立
OPTIONS サーバが許可しているメソッドを調べる
TRACE サーバまでのネットワーク経路を調べる

REST API は、4つのHTTPメソッド「GET」「POST」「PUT」「DELETE」を使用したAPI実装のこと。

HTTPメソッド RESTにおける動作
GET リソース取得(READ)
POST リソース作成(CREATE)
PUT リソース更新(UPDATE)
DELETE リソース削除(DELETE)

Requestsライブラリ インストール

インストールはpipで行います。

pip install requests

使い方

基本的には以下のようにURLを指定してやればOK(パラメータは任意)

import requests

url = "http://xxxxx"
pyaload = {"key1":"value1", "key2":"value2"}

r = requests.get(url, params=payload)

GET以外も使い方は同じ。

r = requests.post(url)
r = requests.put(url)
r = requests.delete(url)

レスポンス

サーバからのレスポンスは、レスポンスの形式に応じて以下のように確認できます。

# テキスト
r.text

# バイナリ
r.content

# JSON
r.json()

# 生レスポンス
r.raw

# レスポンスのHTTPステータスコード
r.status_code

実際に使ってみる

こちらの 郵便番号検索API をPythonから叩いてみます。

import requests

url = "http://zip.cgis.biz/xml/zip.php"
payload = {"zn": "1310045"}

r = requests.get(url, params=payload)

r.text

実行結果

'<?xml version="1.0" encoding="utf-8" ?>\n<ZIP_result>\n<result name="ZipSearchXML" />\n<result version="1.01" />\n<result request_url="http%3A%2F%2Fzip.cgis.biz%2Fxml%2Fzip.php%3Fzn%3D1310045" />\n<result request_zip_num="1310045" />\n<result request_zip_version="none" />\n<result result_code="1" />\n<result result_zip_num="1310045" />\n<result result_zip_version="0" />\n<result result_values_count="1" />\n<ADDRESS_value>\n<value state_kana="トウキョウト" />\n<value city_kana="スミダク" />\n<value address_kana="オシアゲ" />\n<value company_kana="none" />\n<value state="東京都" />\n<value city="墨田区" />\n<value address="押上" />\n<value company="none" />\n</ADDRESS_value>\n</ZIP_result>\n'

参考にしたサイト

97
97
1

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
97
97