PythonでWeb上からファイルを読み込む方法としてurlopen()について説明します。ローカルファイルを読み込むにはopen()を使いファイルを開きますが、Web上のファイルを開く際も基本的には同じです。
指定したURLのファイルを扱うためには、urllib, urllib2などのモジュールを使うと便利です。今回はurllib2を使います。urllib2はurllibと本質的には変わりませんが、basic認証やクッキーがサポートされています。
Web上のファイルを開く:urlopen()
Web上からファイルを開くためには、urllib2.urlopen()を使います。
1 |
urllib2.urlopen('URL') |
引数には取得するファイルのURLを指定します。以下のプログラムでは、URLで指定したファイルを最後まで読み込んだ結果を表示しています。
1 2 3 4 5 6 7 |
# -*- coding: utf-8 -*- import urllib2 f = urllib2.urlopen('http://www.google.com') print f.read() # 開いたファイルの中身を表示する f.close() |
read(size)はファイルの中身を引数で指定したsizeバイト分まとめて読み込み文字列として返します。sizeを省略した場合はファイルの最後まで読み込みます。
また、サーバが404(not found)を返すとurlib2.HTTPErrorが発生します。この場合には、例外オブジェクトのread()メソッドを用いてエラー内容やエラーへの対処等のメッセージを読み込むことができます。
1 2 3 4 5 6 7 8 9 10 11 |
# -*- coding: utf-8 -*- import urllib2 try: f = urllib2.urlopen('http://') stdout = f.read() # 通信が正常に行われた場合、ファイルの内容を読み込む print stdout except urllib2.HTTPError, e: # 404が返された場合 stderrout = e.read() # エラーストリームを読み込む print stderrout |
上のプログラムを実行すると、指定したURLにページが存在しないので、例外が発生しexceptブロック内の処理が実行されます。