2018年6月15日金曜日
ウズマスター戦記
ウズマスター戦記 https://www.uzumax.org/2018/06/pythonurllibget.html

PythonのurllibでGetリクエストを行う

PythonのHTTPリクエストを行うにはRequestsというライブラリを使用するのが簡単と言われています。

確かにその通りだと思いますが、別途ライブラリを導入する手間が必要です。

ちょっとしか該当処理が無い処理であれば、標準ライブラリであるurllibを使う方が軽量で良いんじゃないかと思います。

urllibを使ったGET通信のサンプルを置いておきます。

urllibを使用したGetリクエスト通信のサンプル

"""
HTTPリクエストのGet通信のサンプルです。
"""

import urllib.request
import urllib.parse
from setting import setting
from logging import config, getLogger

config.dictConfig(setting.LOGGING)
logger = getLogger(__name__)

# 正常なURL
UZU_BLOG_FEED_URL = 'https://blog.uzumax.org/feeds/posts/summary?published-min=2018-05-31T00:00:00&published-max=2018-07-01T23:59:59&orderby=published&max-results=500'

# 存在しないURL
NOT_FOUNT_URL = 'https://xxx.uzumax.org/'


def http_get(target_url):
    """
    正常に処理が完了するリクエストを送信します。

    Args:
        target_url (str): 送信先URL
    """
    logger.info('送信先URL=%s', target_url)

    try:

        # target_urlに向けて接続する。
        with urllib.request.urlopen(target_url) as res:

            # レスポンスを受け取る。
            # 人間が読み取る為にはデコードが必要。
            body = res.read().decode("utf-8")

            logger.info(body)

    except urllib.error.URLError as e:

        logger.exception("リクエストに失敗しました。URLが不正です。", e)


    except Exception as e:

        logger.exception("リクエストに失敗しました。", e)


if __name__ == '__main__':
    # 正常に通信出来る処理
    http_get(UZU_BLOG_FEED_URL)
    # URLが存在しない処理
    http_get(NOT_FOUNT_URL)

GitHub

https://github.com/Uzumaster/python-sample/blob/master/request/get.py

0 件のコメント:

コメントを投稿

お気軽にコメント下さい。