2013-03-06 64 views
48

我使用的请求库和访问一个网站,从它与下面的代码收集数据:请求 - 如何判断你得到一个404

r = requests.get(url) 

我想增加误码测试用于输入不正确的URL并返回404错误。如果我故意输入的网址无效,当我这样做:

print r 

我得到这个:

<Response [404]> 

编辑:

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

+0

查看文档:http://docs.python-requests.org/en/latest/第一页指出要查看r.status_code – 2013-03-06 21:50:05

回答

110

看那r.status_code 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),它被认为是“真”:

if r: 
    # successful response 

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

相关问题