小编典典

请求——如何判断你是否收到 404

all

我正在使用 Requests 库并使用以下代码访问网站以从中收集数据:

r = requests.get(url)

我想在输入不正确的 URL 并返回 404 错误时添加错误测试。如果我故意输入一个无效的 URL,当我这样做时:

print r

我明白了:

<Response [404]>

编辑:

我想知道如何测试。对象类型仍然相同。当我执行r.contentorr.text时,我只是获取自定义 404 页面的 HTML。


阅读 56

收藏
2022-06-30

共1个答案

小编典典

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),则认为是“rue”:

if r:
    # successful response

如果您想更明确,请使用if r.ok:.

2022-06-30