PythonのRequestsライブラリ徹底解説

特徴

  • 接続プールとKeep-Alive機能
  • 国際化ドメインおよびURLサポート
  • 持続的なCookieセッション
  • ブラウザスタイルSSL認証
  • 自動コンテンツデコード
  • 基本/摘要認証
  • ユニークなキー/値形式のCookie管理
  • 自動圧縮解除
  • Unicode対応のレスポンスボディ
  • HTTP(S)プロキシサポート
  • ファイルチャンクアップロード
  • ストリームダウンロード
  • 接続タイムアウト設定
  • チャンクリクエスト
  • .netrcファイルサポート

欠点

  • 同期ブロッキングモード、非同期やコルーチンは未サポート
  • HTTP/2.0は現時点では未対応

インストール

pipを使用して簡単にインストールできます:

pip install requests

GETリクエストの送信

requestsを用いてGETリクエストを送るには、単にURLを指定し、必要な場合パラメータを付与します。以下に例を示します。

import requests
response = requests.get('https://httpbin.org/get', params={'name': '山田太郎', 'age': '30'})
print('ステータスコード:', response.status_code)
print('レスポンステキスト:', response.text)
print('レスポンスヘッダー:', response.headers)

POSTリクエストの送信

POSTリクエストの送信には、`requests.post()`メソッドを使用します。データ形式に応じて適切な引数を指定します。

import requests

url = 'https://httpbin.org/post'
data = {'name': '山田太郎', 'password': '1234'}
headers = {'Content-Type': 'application/x-www-form-urlencoded'}

response = requests.post(url, data=data, headers=headers)
print(response.text)

JSONフォーマットでのデータ送信

JSON形式でデータを送信するには、`json`引数を使用します。

import requests

url = 'https://httpbin.org/post'
json_data = {'name': '山田太郎', 'age': 30}

response = requests.post(url, json=json_data)
print(response.text)

XMLフォーマットでのデータ送信

XML形式のデータを送信するには、`data`引数を使用し、適切なヘッダー情報を設定します。

import requests

url = 'https://httpbin.org/post'
xml_data = '''<xml>
    <name>山田太郎</name>
    <age>30</age>
</xml>'''
headers = {'Content-Type': 'application/xml'}

response = requests.post(url, data=xml_data.encode('utf-8'), headers=headers)
print(response.text)

マルチパートフォームデータ(ファイルアップロード)

複数のファイルを含むフォームデータを送信するには、`files`引数を使用します。

import requests

url = 'https://httpbin.org/post'
files = {
    'avatar': open('/path/to/image.jpg', 'rb'),
    'document': ('report.pdf', open('/path/to/report.pdf', 'rb'), 'application/pdf')
}

response = requests.post(url, files=files)
print(response.text)

乱碼処理

レスポンスのエンコーディングが正しくない場合、`apparent_encoding`を使って修正することが可能です。

import requests

response = requests.get('https://www.example.com/')
print('初期エンコーディング:', response.encoding)
print('推測エンコーディング:', response.apparent_encoding)

response.encoding = response.apparent_encoding
print('修正後のレスポンス:', response.text)

ファイルダウンロード

バイナリデータとしてファイルをダウンロードし保存することができます。

import requests

url = 'https://example.com/path/to/file.jpg'
response = requests.get(url)

with open('downloaded_file.jpg', 'wb') as file:
    for chunk in response.iter_content(1024):
        file.write(chunk)

タグ: Python requests HTTPリクエスト API開発 ファイルアップロード

5月26日 22:43 投稿