看看这里的文档:http://docs.python-requests.org/en/latest/user/quickstart/
这应该打印200
,它确实。
import requests
r = requests.get('http://souke.xdf.cn/Category/1-40-0-0.html?v=5&page=1&pagesize=50')
print r.status_code
这应该打印404
但它打印200
import requests
r = requests.get('http://souke.xdf.cn/CategoryXXX/1-40-0-0.html?v=5&page=1&pagesize=50')
print r.status_code
这是为什么?
还有另一种方法来识别发生了404
错误吗?
问题不在于requests
,而在于您访问的网站。它正在返回200
。
您可以使用Chrome开发人员工具查看标题来确认这一点:
Request URL:http://souke.xdf.cn/CategoryXXX/1-40-0-0.html?v=5&page=1&pagesize=50
Request Method:GET
Status Code:200 OK
您正在寻找的页面位于服务器上,因此服务器响应200 OK。不过,您可以使用Requests的raise_for_status(),在发现服务器错误时引发异常,例如404,401等。
import requests
>>>>r = requests.get('http://something.com/404/')
>>>>print r.status_code
404
>>>>r.raise_for_status()
Traceback (most recent call last):
File "requests/models.py", line 832, in raise_for_status
raise http_error
requests.exceptions.HTTPError: 404 Client Error
.raise_for_status()
如果不是200,这将引发错误
这比使用更好
.status_code