0

URL を操作するスクリプトの作成にほとんど問題はありません。urllib.urlopen() を使用して、目的の URL のコンテンツを取得しています。ただし、これらの URL の一部では認証が必要です。urlopen は、ユーザー名とパスワードを入力するように求めます。認証が必要なすべての URL を無視し、簡単にスキップして続行する必要があります。これを行う方法はありますか? HTTPError の例外をキャッチしようかと思っていたのですが、実は例外は urlopen() メソッドで処理されているのでうまくいきません。

返信ありがとうございます。

4

1 に答える 1

1

あなたはurllib2.HTTPError例外について正しいです:

exception urllib2.HTTPError

HTTPError は例外 (URLError のサブクラス) ですが、非例外的なファイルのような戻り値 (urlopen() が返すものと同じもの) としても機能します。これは、認証のリクエストなど、特殊な HTTP エラーを処理する場合に役立ちます。

code

RFC 2616 で定義されている HTTP ステータス コード。この数値は、BaseHTTPServer.BaseHTTPRequestHandler.responses にあるコードのディクショナリにある値に対応します。

例外のコード属性を使用して、認証が必要であることを確認できます (コード 401)。

>>> try: 
...     conn = urllib2.urlopen('http://www.example.com/admin')
...     # read conn and process data
... except urllib2.HTTPError, x:
...     print 'Ignoring', x.code
...     
Ignoring 401
>>> 
于 2010-03-04T16:14:05.467 に答える