196

Requests ライブラリを使用して Web サイトにアクセスし、次のコードでデータを収集しています。

r = requests.get(url)

不適切な URL を入力して 404 エラーが返された場合のエラー テストを追加したい。意図的に無効な URL を入力すると、次のようになります。

print r

私はこれを得る:

<Response [404]>

編集:

私はそれをテストする方法を知りたいです。オブジェクトの種類は同じです。r.contentまたはを実行するr.textと、カスタム 404 ページの HTML を取得するだけです。

4

2 に答える 2

402

r.status_code属性を見てください:

if r.status_code == 404:
    # A 404 was issued.

デモ:

>>> import requests
>>> r = requests.get('http://httpbin.org/status/404')
>>> r.status_code
404

requestsエラー コード (4xx または 5xx) の例外を発生させたい場合は、次のように呼び出しr.raise_for_status()ます。

>>> r = requests.get('http://httpbin.org/status/404')
>>> r.raise_for_status()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "requests/models.py", line 664, in raise_for_status
    raise http_error
requests.exceptions.HTTPError: 404 Client Error: NOT FOUND
>>> r = requests.get('http://httpbin.org/status/200')
>>> r.raise_for_status()
>>> # no exception raised.

ブール値のコンテキストで応答オブジェクトをテストすることもできます。ステータス コードがエラー コード (4xx または 5xx) でない場合は、「true」と見なされます。

if r:
    # successful response

より明確にしたい場合は、 を使用してif r.ok:ください。

于 2013-03-06T21:48:50.033 に答える