Pythonを利用すると、Webページを読み出すプログラムが簡単に作れます。
Webページの内容を読み出す
サンプルとして、前に作った 「IPアドレスを調べるページ」を読み出すPythonスクリプトを書いてみましょう。
次にコードを示します。ファイル名「get-web.py」で保存してください。
from urllib.request import urlopen
try:
url = "https://webservice.tokyo/p/ip.php"
web = urlopen(url)
data = web.read()
web.close()
text = data.decode("utf-8")
print(text, end="")
except Exception as ex:
print(ex.__class__.__name__, ":", ex.reason)
Windowsのコマンドプロンプトを起動し、このスクリプトを実行すると、次のように自分のIPアドレスが表示されます。
C>py get-web.py
157.7.107.131
WebページのHTTPヘッダを読み出す
Webサイトをチェックするとき、ページの中身データの他に、HTTPヘッダの情報を知りたい場合も多々あります。
そこで今度は、WebページのHTTPヘッダを表示するスクリプトを書いてみましょう。ファイル名を「head-web.py」とします。
from urllib.request import urlopen
try:
url = "https://webservice.tokyo/p/ip.php"
web = urlopen(url)
headers = web.getheaders()
web.close()
for (key, val) in headers:
print(key, ":", val)
except Exception as ex:
print(ex.__class__.__name__, ":", ex.reason)
このスクリプトを実行すると、次のようにWebページのHTTPヘッダが表示されます。
C>py head-web.py
Date : Thu, 13 Feb 2020 15:37:58 GMT
Content-Type : text/html; charset=UTF-8
Content-Length : 15
Connection : close
X-Powered-By : PHP/7.3.10
Vary : Range
Accept-Ranges : none
Server : Apache
というわけで、Webページの内容や、そのHTTPヘッダを表示するPythonスクリプトを紹介しました。
今回はWebページのURLをコード中に 決め打ちで書きましたが、ここをキーボードから入力できる形にすると、ちょっと便利なツールになりそうです。そのうち機会があれば、そのへんの方法についても説明したいと思います。
技術情報
今回のスクリプトに関する備忘メモです。想定読者は1年後の自分です。
- urlopen関数:Webページを開く
Webサイトにアクセスするには、urllib.requestモジュールのurlopen関数を利用する。詳しくはPython公式ドキュメントを参照。
https://docs.python.org/ja/3/library/urllib.request.html - read関数:Webページの内容を読み出す
urlopen関数で開いたWebページの内容を得るには、read関数を利用する。得られるのはバイナリデータ(byte配列)であり、文字列として扱うにはバイナリから文字列への変換(decode)が必要になる。 - decode関数:byte配列を文字列に変換する
byte配列を文字列化する。get-web.py ではdataの文字コードはUTF-8だと決め打ちした。汎用的なWeb読み出しツールを作るなら、ここは工夫が必要であろう。 - getheaders関数:WebページのHTTPヘッダを読み出す
urlopen関数で開いたWebページのHTTPヘッダを得るには、getheaders関数を利用する。 得られるのは(項目名, 値)のリストである。
コメント