请求——如何判断是否得到404

2024-04-26 07:32:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用请求库并访问一个网站,从中收集数据,代码如下:

r = requests.get(url)

我想添加错误测试,当输入了不正确的URL并返回404错误时。如果我故意输入无效的URL,则在执行此操作时:

print r

我明白了:

<Response [404]>

编辑:

我想知道如何测试。对象类型仍然相同。当我做r.contentr.text时,我只得到自定义404页面的HTML。


Tags: 数据对象代码texturl编辑类型get
1条回答
网友
1楼 · 发布于 2024-04-26 07:32:05

看看^{} attribute

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:

相关问题 更多 >