Python中为什么requests.HTTPError错误需要raise_for_status()来抛出?

  1. 首先看下面代码的运行情况:
	import requests
	
	res = requests.get("https://www.csdn.net/eee", headers=headers, timeout=1)
	res.encoding = "utf8"
	print(res.status_code)
	print(res.text)

运行结果
Python中为什么requests.HTTPError错误需要raise_for_status()来抛出?_第1张图片
可见requests请求可以正常返回状态码以及html文本,并没有报错。状态码只是服务器响应的结果,而错误的状态码也是正常的响应结果。

加上try…except…再看看:
Python中为什么requests.HTTPError错误需要raise_for_status()来抛出?_第2张图片
没有任何异常!响应状态码为404!

  1. 加上raise_for_status(),观察运行结果
    Python中为什么requests.HTTPError错误需要raise_for_status()来抛出?_第3张图片
    此时被抛出404错误!
    由此可见一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应),我们必须要通过使用raise_for_status() 才能抛出异常!

  2. 加上try…except…

Python中为什么requests.HTTPError错误需要raise_for_status()来抛出?_第4张图片
此时抛出的异常并被第一个 requests.HTTPError 异常捕获。

这样一看raise_for_status和try…except…之间的关系就很清晰了吧

你可能感兴趣的:(python爬虫)