PythonでWeb上のデータを読み込む:urlopen()

PythonでWeb上からファイルを読み込む方法としてurlopen()について説明します。ローカルファイルを読み込むにはopen()を使いファイルを開きますが、Web上のファイルを開く際も基本的には同じです。

指定したURLのファイルを扱うためには、urllib, urllib2などのモジュールを使うと便利です。今回はurllib2を使います。urllib2はurllibと本質的には変わりませんが、basic認証やクッキーがサポートされています。

Web上のファイルを開く:urlopen()

Web上からファイルを開くためには、urllib2.urlopen()を使います。

urllib2.urlopen('URL')

引数には取得するファイルのURLを指定します。以下のプログラムでは、URLで指定したファイルを最後まで読み込んだ結果を表示しています。

# -*- 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()メソッドを用いてエラー内容やエラーへの対処等のメッセージを読み込むことができます。

# -*- 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ブロック内の処理が実行されます。


イベント

2017/10/06(金)
UX School(全10回)