すぐに使えるPythonでHTTPリクエストをする方法
はじめに
PythonでHTTPリクエストが必要な場面は、WebAPIと通信したいときや、Webスクレイピングをする時などたくさんあります。
そんな時に簡単にHTTPリクエストを実装する方法を紹介します。
HTTPリクエストの方法
今回は2つの方法を説明します。
方法1: Python標準ライブラリ(urllib.request)を使う方法
【メリット】
・標準ライブラリなのでインストールが不要。
【デメリット】
・方法②で紹介するrequests
ライブラリよりも機能が少ない。
実際のコード
https://blog.rabadons.com
からHTMLを取得する。
import urllib.request
request_url = 'https://blog.rabadons.com'
with urllib.request.urlopen(request_url) as response:
print(response.read())
urllib.request.urlopen()
の戻り値はHTTPResponseオブジェクトです。
したがって以下のようなコードで様々なデータが取得できます。
# プロトコルバーション
response.version # 10=HTTP/1.0 11=HTTP/1.1
# リクエストヘッダ
response.headers
# ステータス
response.status
# HTML
response.read()
# HTMLの最初の100バイト分を取得
response.read(100)
方法2: サードパーティのライブラリ(requests)を使う方法
【メリット】
・方法①で紹介したurllib.request
よりも機能が多い
・コードが簡潔
【デメリット】
・サードパーティなのでインストールが必要
実際のコード
まずはrequests
のインストール。
pip install requests
https://blog.rabadons.com
からHTMLを取得する。
import requests
request_url = 'https://blog.rabadons.com'
response = requests.get(request_url)
response.encoding = response.apparent_encoding #正しい文字コードでするため
print(response.text)
response.encoding = response.apparent_encoding
は取得したデータの文字コードを正しくセットするために処理しています。
この処理がないと、日本語のぺージを取得したときなどに文字化けしてしまいます。
requests.get()
の戻り値は、requests.Responseクラスです。
# ヘッダー
response.headers
# ステータスコード
response.status_code
# 文字コード
response.encoding
# 正しい文字コード
response.apparent_encoding
# JSON(コンテンツがJSON形式の場合)
response.json()
まとめ
今回はPythonでHTTPリクエストする方法を紹介をしましたが、GET
リクエストのみの説明になっています。どちらのライブラリもPOST
、PUT
、DELETE
、その他のメソッドを使用可能なので、ドキュメントを読んで実装してみましょう。
最後に各ライブラリの公式ドキュメントのリンクを記載します。