ウエブにて
Python標準ライブラリ
●httpは、クライアントサーバHTTPの詳細を管理する
--clientは、クライアントサイトの処理を行う
--serverはPythonによるウエブサーバ開発を助ける
--cookiesは複数のサイトアクセスにまたがて必要な情報を保存する
●Urllibはhttpの上で実行される。
--requestは、クライアントサーの要求を処理する。
--responは、サーバーの応答を処理する
--parseは、URLを部品に切り分ける
import urllib.request as ur
url = 'https://raw.githubusercount.com/koki0702/'
conn = ur.urlopen(url)
print(conn)
data = conn.read()
print(data)
このちょっとしたPythoコードが、リモートサーバーへTCP/IP接続
を開設し、HTTP要求を送り、サーバーからHTTP応答を受け取っている。
応答には、ページデータだけでなくそれ以外にもさまざま情報が含まれて
いる。応答の中でも特に重要な部分は、httpステータスコード
print(conn.status)
200
200は、全てうまくいっていることを示す。HTTPステータスコード
は何十種もある百の桁の値に基いて5種類に分類されている。
1xx(情報)
サーバは要求を受け取ったが、クライアントに対して知らせるべき
追加情報がある
2xx(成功)
要求は正しく機能した。200以外の成功コードは、追加情報が含まれている
3xx(リダイレクト)
リソースが移動しているので、応答はクライアントに対して新しいURLを
4xx(クライアントエラー)
クライアントサイドに問題がある。有名な404(見つからない)
5xx
500は汎用のエラーコードである。502(不正なゲートウエイ)はウエブ
サーバーとバックエンドアプリケーションサーバーの間の接続に
問題がある
text/plainという文字列はMIMEタイプであり。ただのテキストです。
標準ライブラリを越えて
ほとんどお目的では、requestsを使った方がウエブ開発には簡単になる
まず、Python環境にrequestライブラリーをインストールしなければなら
ないターミナル(Windowsではcmd)にて,pip install rquests
reep = request.get(url)
入力がすこし減らせる
ウエブサーバー
pythonベースのウエブフレームワークがたくさん作られている。
ウエブフレームワークは、ウエブサイトを作るための機能を提供する
ものなので、単純なウエブ(HTTP)サーバ以上のことをする。
ルーテイング(URLを解析してサーバー関数呼び出しを行う)、
テンプレート(動的に情報を組み込めるHTMLファイル)、デバッグ
などの機能が含まれている。
たった1行のPythonコードを書くだけで、単純なウエブサーバー
を実行できる。
python -n http.server
こうすると、Pythonによる飾りのないHTTPサーバが実行されると、
問題なければ、初期ステータスメッセージが表示される。
server HTTP on 0,0,0,0 port 8000 ....
0,0,0,0は任意のTCPアドレスという意味なので、ウエブクライアント
はサーバーがどのようなアドレスでもアクセスできる。
ウエブブラウザでhttp://localhost:8000と入力すると、カレント
デレクトリのファイル一覧が表示されるはず。サーバーは次のように
127.0.0.1 - - [20/feb/2013 22:02:37] "GET / HTTP/1.1" 200
localhostと127.0.0.0はローカルコンピューターを指すTCPの用語で
同じ意味です。
127.0.0.1
クライアントのIPアドレス
一つ目の-
リモートアドレス(わかった場合)
二つ目の -
ログインユーザー名(必須とされている場合)
[20/feb/2013 22:02:37]
アクセス日時
"GET / HTTP/1.1"
ウエブサーバに送られたコマンド
●get---HTTPメソッド
●/----要求されたリソース(ルートデレクトリ)
●HTTP/1.1----HTTPのバージョン
最後の200 ウエブサーバーが返してきたHTTPステータス
プロセスを強制終了するときはターミナルでは Ctrl-Cキーを押せばいい