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'