Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
41
Help us understand the problem. What is going on with this article?

More than 1 year has passed since last update.

@hisshi00

PythonでWeb APIを叩く

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'

参考にしたサイト

41
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
41
Help us understand the problem. What is going on with this article?