[Python] RequestsでGET、POSTを完全マスターする!responseやjsonの操作方法を徹底紹介します。

PythonでHTTP通信を行う時に大変便利なのが、「Requests」ライブラリです。

「Requests」を使えばPython標準で利用できる「urllib」よりもシンプルにHTTPリクエストをコーディングできます。

Requestでできるようになること
  • 各種APIとのHTTP通信
  • ファイルのダウンロード
  • Webスクレイピング
目次

Requestsのインストール

pipでRequestsライブラリはインストールすることができます。

pip install requests

Requestsの使い方

Requestsの基本的の使い方、各種メソッド、レスポンスオブジェクトを紹介します。

基本的なリクエスト方法

基本的な使い方はRequestライブラリでURLを引数に渡して、各HTTPメソッドを実行します。

import requests

url = <ここにURL>

response = requests.get(url)

print(response)

以下が実行結果になります。

>>> import requests
>>> url = https://www.google.co.jp/
>>> response = requests.get(url)
>>> print(response)
<Response [200]>

<Response [200]> というレスポンスオブジェクトが返ってきました。

この中身については後ほど解説します。

200となっているのでHTTPの正常リクエストということがわかります。

利用できるHTTPメソッド

各種HTTPメソッドはRequestsライブラリに容易されているのでリクエスト通信を行うことができます。

メソッドRequestsライブラリのメソッド
GETrequests.get(url)
POSTrequests.post(url)
PUTrequests.put(url)
DELETErequests.delete(url)
HEADrequests.patch(url)

以下が利用方法例になります。

import requests

url = <任意のURL>

response = requests.get(url)

response = requests.post(url)

response = requests.put(url)

response = requests.delete(url)

response = requests.head(url)

レスポンスオブジェクト

Requestsライブラリの戻り値はレスポンスオブジェクトと呼び、このオブジェクト内に様々な情報が格納されています。

変数利用方法戻り値
urlresponse.urlリクエスト先URL
status_coderesponse.status_codeレスポンスステータス(200 など)
headersresponse.headersヘッダー情報
textresponse.texthtmlやjson形式の文字列型データ
contentresponse.contentzip,jpgファイルなど

以下が利用方法例になります。

import requests

url = https://www.google.co.jp/

response = requests.get(url)

print(response.url)

print(response.status_code)

print(response.headers)

print(response.text)

print(response.content)

よく使うGETリクエストのパターン

ここからはよく使うGETリクエストのパターンを紹介しします。

URLクエリパラメータを渡してGETリクエスト

URLのパラメータをparams引数にディクショナリ型で渡すことができます。

import requests

url = https://www.amazon.co.jp/s/

params = {field-keywords: python}

response = requests.get(url, params=params)

リクエストヘッダーを渡してGETリクエスト

URLのリクエストヘッダーをheaders引数にディクショナリ型で渡すことができます。

import requests

url = https://google.co.jp/s/

headers = {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36}

response = requests.get(url, headers=headers)

print(response.headers)

ファイルを保存するためのGETリクエスト

ファイルを保存するに取得したコンテンツをopenで書き込みます。

最近はファイルサイズも大きくなっているのでチャンク(chunk)を使用して分割する方法をお勧めします。

import requests
import os

url = <任意のURL>
filename = os.path.basename(url)

response = requests.get(url, stream=True)

with open(filename, 'wb') as f:
  for chunk in response.iter_content(chunk_size=1024):
    if chunk:
      response.write(chunk)
      response.flush()

その他のよく使うGETリクエスト

その他よく使うGETリクエストは以下にまとめております。

よく使うPOSTリクエストのパターン

ここからはよく使うPOSTリクエストのパターンを紹介しします。

FormまたはAPIにPOSTするリクエスト

シンプルなFormまたはAPIにPOSTする時にはDict型でPOSTします。

import requests

url = <任意のURL>

payload = {'data': <送信データ>}

response = requests.post(url, data=payload)

エンコードJSONをPOSTするリクエスト

JSONデータを送信する時には一度エンコードしてあげる必要があります。

import requests
import json

url = <任意のURL>

payload = {'data': <送信データ>}

response = requests.post(url, data=json.dumps(payload))

ファイルをPOSTでアップロード

fileをアップロードするためにはopenメソッドでファイルを開いくことで送ることができます。

import requests

url = <任意のURL>

files =  {'file': open('image.jpg', 'rb')}

response = requests.post(url, files=files)
よかったらシェアしてね!
  • URLをコピーしました!
目次