概要

Urllib.request とは Python の標準パッケージに含まれる HTTP クライアントライブラリです。
ここでは基本的な使用方法について紹介します。

GETリクエスト

from urllib import request

request.urlopen('https://httpbin.org/get')

POSTリクエスト

req = request.Request('https://httpbin.org/post', method='POST')
request.urlopen(req)

他にも method 引数に PATCHDELETE を指定することで対応するリクエストを送信することができる。

リクエストボディをつける

from urllib import request, parse

req = request.Request(
  'https://httpbin.org/post',
  parse.urlencode({'test': 123}).encode('utf-8'),
  method='POST'
)
request.urlopen(req)

リクエストパラメータをつける

from urllib import request, parse

req = request.Request(
  '{}?{}'.format('https://httpbin.org/get', parse.urlencode({'test': 123}))
)
request.urlopen(req)

リクエストヘッダを指定する

from urllib import request, parse

req = request.Requset(
  'https://httpbin.org/post',
  data=parse.urlencode({'test': 123}).encode('utf-8'),
  headers={'Content-Type': 'application/json'},
  method='POST'
)
request.urlopen(req)

ベーシック認証

from urllib import request, parse
import base64

req = request.Request(
  'http://example/secret',
  headers={
    'Authorization': 'Basic' + (base64.b64encode('user:password'.encode())).decode('ascii')
  }
)
request.urlopen(req)

レスポンスを扱う

res = request.urlopen('https://httpbin.org/get')

# ステータスコード
res.status
# レスポンスヘッダー
res.headers
# レスポンスボディ
res.read()