Python のお勉強14 ( HTTP クライアント )
「Python のお勉強シリーズ」第14回目は、HTTP リクエストを行なうサンプルコードを書いてみました。
標準で http.client モジュール、urllib.request モジュールというのが用意されているみたいなので、これらを使ってやってみました。
・21.11. http — HTTP モジュール群 — Python 3.4.3 ドキュメント
http://docs.python.jp/3.4/library/http.html
■ httpclient.py
#coding: cp932 def get(): import http.client conn = http.client.HTTPConnection("***.***.***.***") conn.request("GET", "/test.html") res = conn.getresponse() print("status:", res.status) print("reason:", res.reason) print("headers:", res.getheaders()) print("body:", res.read(300)) def get2(): import urllib.request req = urllib.request.Request(url="http://***.***.***.***/test.html") with urllib.request.urlopen(req) as f: print("status:", f.status) print("reason:", f.reason) print("headers:", f.getheaders()) print("body:", f.read(100)) if __name__ == "__main__": print("----- http.client -----") get() print("----- urllib.request -----") get2()
■ 実行結果
----- http.client ----- status: 200 reason: OK headers: [('Date', 'Mon, 31 Aug 2015 03:20:23 GMT'), ('Server', 'Apache/2.2.15 (CentOS)'), ( dified', 'Wed, 08 Jul 2015 15:44:31 GMT'), ('ETag', '"20e28-3f-51a5f03ca0675"'), ('Accept-Ra bytes'), ('Content-Length', '63'), ('Connection', 'close'), ('Content-Type', 'text/html; cha -8')] body: b'<!DOCTYPE html>\n<html>\n<body>\n<h1>test !!</h1>\n</body>\n</html>\n' ----- urllib.request ----- status: 200 reason: OK headers: [('Date', 'Mon, 31 Aug 2015 03:20:23 GMT'), ('Server', 'Apache/2.2.15 (CentOS)'), ( dified', 'Wed, 08 Jul 2015 15:44:31 GMT'), ('ETag', '"20e28-3f-51a5f03ca0675"'), ('Accept-Ra bytes'), ('Content-Length', '63'), ('Connection', 'close'), ('Content-Type', 'text/html; cha -8')] body: b'<!DOCTYPE html>\n<html>\n<body>\n<h1>test !!</h1>\n</body>\n</html>\n'
一応、urllib.request の方がより高レベルな API って感じみたいですが、今回程度のサンプルコードでは特に高レベルな有り難みみたいなものは受けられてないですね。
以上です。