以下の例では、 python.org のメインページを取得して、その最初の 100 バイト分を表示します:
>>> import urllib2
>>> f = urllib2.urlopen('http://www.python.org/')
>>> print f.read(100)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<?xml-stylesheet href="./css/ht2html
今度は CGI の標準入力にデータストリームを送信し、CGI が返すデータ を読み出します:
>>> import urllib2 >>> req = urllib2.Request(url='https://localhost/cgi-bin/test.cgi', ... data='This data is passed to stdin of the CGI') >>> f = urllib2.urlopen(req) >>> print f.read() Got Data: "This data is passed to stdin of the CGI"
上の例で使われているサンプルの CGI は以下のようになっています:
#!/usr/bin/env python import sys data = sys.stdin.read() print 'Content-type: text-plain\n\nGot Data: "%s"' % data
以下はベーシック HTTP 認証の例です:
import urllib2
# ベーシック HTTP 認証をサポートする OpenerDirector を作成する...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password('realm', 'host', 'username', 'password')
opener = urllib2.build_opener(auth_handler)
# ...urlopen から利用できるよう、グローバルにインストールする
urllib2.install_opener(opener)
urllib2.urlopen('http://www.example.com/login.html')
build_opener() はデフォルトで沢山のハンドラを提供しており、
その中にProxyHandler があります。デフォルトでは、
ProxyHandler は<scheme>_proxy という環境変数を使います。
ここで<scheme> は URL スキームです。例えば、 HTTP プロキシの
URL を得るには、環境変数http_proxy を読み出します。
この例では、デフォルトの ProxyHandler を置き換えて プログラム的に作成したプロキシ URL を使うようにし、 ProxyBasicAuthHandler でプロキシ認証サポートを追加します。
proxy_handler = urllib2.ProxyHandler({'http': 'http://www.example.com:3128/'})
proxy_auth_handler = urllib2.HTTPBasicAuthHandler()
proxy_auth_handler.add_password('realm', 'host', 'username', 'password')
opener = build_opener(proxy_handler, proxy_auth_handler)
# 今回は OpenerDirector をインストールするのではなく直接使います:
opener.open('http://www.example.com/login.html')
以下は HTTP ヘッダを追加する例です:
headers 引数を使ってRequest コンストラクタを呼び出す方法 の他に、以下のようにできます:
import urllib2
req = urllib2.Request('http://www.example.com/')
req.add_header('Referer', 'http://www.python.org/')
r = urllib2.urlopen(req)
OpenerDirector は全ての Request に User-Agent: ヘッダを自動的に追加します。これを変更するには:
import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')
のようにします。
また、Request がurlopen() (や OpenerDirector.open()) に渡される際には、いくつかの標準ヘッダ (Content-Length:, Content-Type: および Host:) も追加されることを忘れないでください。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。