PythonでGETメソッドを使用して情報を渡す方法【CGIプログラミング入門】
GETメソッドとは
GETメソッドは、エンコードされたユーザー情報をページリクエストに付加して送信する方式です。ページのURLとエンコードされた情報は「?」記号で区切られます。
https://www.test.com/cgi-bin/hello.py?key1=value1&key2=value2
GETメソッドは、ブラウザからWebサーバーへ情報を渡す際のデフォルトの方法であり、送信した内容はブラウザのアドレスバー(Locationボックス)に長い文字列として表示されます。そのため、パスワードなどの機密情報をサーバーに送る場合には、GETメソッドは絶対に使用しないでください。
また、GETメソッドにはサイズ制限があり、1回のリクエストで送信できる文字列は1024文字までです。GETメソッドはQUERY_STRINGヘッダーを使って情報を送信するため、CGIプログラム側ではQUERY_STRING環境変数を通じてその情報にアクセスできます。
情報を渡す方法としては、キーと値のペアを任意のURLに連結するだけで十分な場合もありますし、HTMLの<FORM>タグを使ってGETメソッドで情報を送信することも可能です。
シンプルなURLの例:GETメソッド
以下は、GETメソッドを使って2つの値をhello_get.pyプログラムに渡すシンプルなURLの例です。
次に紹介するのは、Webブラウザからの入力を処理するhello_get.pyスクリプトです。cgiモジュールを利用すると、渡された情報へとても簡単にアクセスできます。
コード例
#!/usr/bin/python
# CGI処理用モジュールをインポート
import cgi, cgitb
# FieldStorageインスタンスを作成
form = cgi.FieldStorage()
# 各フィールドからデータを取得
first_name = form.getvalue('first_name')
last_name = form.getvalue('last_name')
print "Content-type:text/html\r\n\r\n"
print "<html>"
print "<head>"
print "<title>Hello - Second CGI Program</title>"
print "</head>"
print "<body>"
print "<h2>Hello %s %s</h2>" % (first_name, last_name)
print "</body>"
print "</html>"出力結果
このスクリプトを実行すると、以下のような結果が表示されます。
Hello ZARA ALI
シンプルなフォームの例:GETメソッド
この例では、HTMLフォームと送信ボタンを使って2つの値を渡します。入力の処理には、先ほどと同じCGIスクリプトhello_get.pyを使用します。
<form action = "/cgi-bin/hello_get.py" method = "get"> First Name: <input type = "text" name = "first_name"> <br /> Last Name: <input type = "text" name = "last_name" /> <input type = "submit" value = "Submit" /> </form>
出力結果
上記フォームの実際の出力は以下の画像の通りです。名前(First Name)と姓(Last Name)を入力し、送信ボタンをクリックすると結果が表示されます。

補足:Python 2とPython 3の違いについて
上記のサンプルコードはPython 2のprint文を使用しています。Python 3ではprint()関数形式で記述する必要がある点に注意してください。また、cgiモジュールは近年のPythonバージョンでは非推奨となり、最終的には標準ライブラリから削除されました。現在の実務開発では、FlaskやDjangoといったWebフレームワークを使うことが一般的ですが、GETメソッドによるパラメータ受け渡しという基本的な仕組み自体は今も変わりません。
-
PythonでWebからファイルをダウンロードする方法|requestsライブラリの使い方を徹底解説
Pythonには、urllibやrequestsなど、Webからファイルをダウンロードするためのさまざまなモジュールが用意されています。本記事では、その中でも定番のrequestsライブラリを使用して、URLから効率的にファイルをダウンロードする方法を、ステップごとにわかりやすく解説します。 requestsライブラリでファイルをダウンロードする基本手順 1. モジュールをインポートする import requests 2. ダウンロード対象のURLを指定する url = https://www.facebook.com/favicon.ico r = requests.get(url, al
-
PythonでのCX_Freezeの使い方:スクリプトを実行ファイル(EXE)に変換する方法
はじめに 何か面白いものを作りたいという欲求は人間の本能であり、完成したものは誰かに共有したくなるものです。Pythonでもその願いを叶えられます。ただし、作成したPythonスクリプトをそのまま共有するには、相手のマシンにも同じバージョンのPythonと、プログラムで使用しているすべてのモジュールがインストールされている必要があります。 そこで役立つのがCX_Freezeです。このツールを使えば、Pythonがインストールされていない環境でも動作するスタンドアロンの実行ファイル(.exe)を作成できます。 CX_Freezeのインストール まず、コマンドプロンプトで以下のコマンドを実行し、c