特徴
- 接続プールと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)