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'