これはなに
Python3でHTTPアクセスをしたい場合は、urllibという組み込みライブラリを利用できます。
しかしながら、Python2に同名で互換性のないライブラリがあることや、
人間に扱い易いHTTPリクエストを実現するrequestsなどを勧められることがあるため、情報を集めづらくなっています。(当人調べ)
組み込みライブラリでHTTPリクエスト実現することは、簡易的なスクリプトやAWS LambdaなどとFunction as a Serviceでの利用を想定すると有効であるため、ターゲットを絞って使えるようにメモ書きを残します。
Getリクエスト
import os.path
import urllib.request
import urllib.parse
base_url = "https://www.google.co.jp/"
path = "search"
headers = {
"Accept-Language": "ja_JP",
}
query = {
"q": "urllib"
}
# os.pathを使ってURLを結合
url = os.path.join(base_url, path)
# クエリストリング
url_with_query = "{}?{}".format(url, urllib.parse.urlencode(query))
print(url_with_query)
req = urllib.request.Request(url_with_query, headers=headers)
# tryでエラーハンドリング
try:
with urllib.request.urlopen(req) as res:
body = res.read().decode("utf-8")
print(body)
except urllib.error.HTTPError as e:
# Status codeでエラーハンドリング
if e.code >= 400:
print(e.reason)
else:
raise e