我正在使用 Requests 库并使用以下代码访问网站以从中收集数据:
r = requests.get(url)
我想在输入不正确的 URL 并返回 404 错误时添加错误测试。如果我故意输入一个无效的 URL,当我这样做时:
print r
我明白了:
<Response [404]>
编辑:
我想知道如何测试。对象类型仍然相同。当我执行r.contentorr.text时,我只是获取自定义 404 页面的 HTML。
r.content
r.text
看r.status_code属性:
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():
requests
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:.
if r.ok: