2010年05月03日

URLから読み込むには

特定のURLからデータを読み込むスクリプトを書いてみます。
Pythonには、標準ライブラリの
  urllib,
  urllib2,
  httplib
 の3つにクラスと関数が用意されている。

1. urllib を使う方法
import urllib

url = "http://www.yahoo.co.jp/"
fd = urllib.urlopen(url)
header = fd.info()
print "Content Type is %s" % header["Content-Type"]
data = fd.read()
print data
fd.close()

ソケット接続に失敗すると、例外 IOError が発行される。
しかし、urllib.urlopen() は、サーバーのレスポンスが 404を返しても例外にはならない。


2. urllib2 を使う方法
 urllib2.urlopen() は、HTTP認証、クッキーなどがサポートされているほかは urllib.urlopen() と同じ。

サーバーがステータスコード 404を返したときには、例外 urllib2.HTTPError になる。
この例外のインスタンスには、read()メソッドがあって、
そのままエラーストリームにアクセスできる。
try:
fd = urllib2.urlopen(url)
#ストリームが正常に開かれた
data = fd.read()
except urllib2.HTTPError, e:
#404を返した
data = e.read()

リクエストヘッダーを付加して呼ぶ
req = urllib2.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
req.add_header('User-Agent', 'Mozilla/5.0')
r = urllib2.urlopen(req)

・エラーストリームとは?
接続に失敗しても、サーバーがデータを送ってきた場合には、エラーストリームからデータを読み取ることができる。よくある例として、HTTP サーバがコード 404で応答したときにサーバーから対処策を指示する HTMLヘルプページが送信されることがある。

・参考
Java の HttpURLConnectionクラスの解説
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのTrackBack URL
http://blog.seesaa.jp/tb/18289742
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。