15
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python3でurllibを使う

Last updated at Posted at 2018-08-27

これはなに

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
15
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
22

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?