如何使用Python的requests库发送HTTP请求并处理响应?
Python中常用的HTTP请求库有很多,比如urllib、httplib、httplib2等等。这里介绍使用requests库。requests库是一个开源的Python HTTP库,它简化了HTTP请求的发送和响应的处理,同时具有简介、实用和简单易用的特性。
使用requests库发送HTTP请求的基本步骤和代码片段如下:
1.导入requests模块:
import requests
2.发送HTTP请求
2.1发起一个GET请求
response=requests.get(url,params=None,**kwargs)
其中url为请求地址,params为请求参数,以字典形式提供,**kwargs为全局可选参数。
例如请求百度搜索“Python”的URL为“https://www.baidu.com/s?wd=Python”,则可以使用如下代码发送GET请求:
response=requests.get('https://www.baidu.com/s',params={'wd':'Python'})
2.2发起一个POST请求
response=requests.post(url,data=None,json=None,**kwargs)
其中url为请求地址,data为请求数据,可以以字典、字符串等多种形式提供,json是一个JSON序列化之后的请求数据,**kwargs为全局可选参数。
例如提交一个表单,可以使用如下代码发送POST请求:
response=requests.post('http://localhost:8080/login',data={'username':'user1','password':'123456'})
3.处理HTTP响应
HTTP响应包含一个状态码和一些相关的信息,例如HTTP头、响应主体等。可以通过requests库处理HTTP响应,可以得到状态码和响应主体等。
3.1得到响应状态码
响应状态码表示请求处理的状态,例如200表示请求成功,404表示请求的资源不存在等等。可以使用如下代码获取响应状态码:
response.status_code
3.2得到响应头
可以使用如下代码获取响应头:
response.headers
3.3得到响应主体
响应主体包含服务器返回的数据,可以通过如下方式获取:
response.content response.text response.json()
其中content返回原始二进制响应内容,text返回Unicode格式响应内容,json()返回JSON格式响应内容。如果响应内容是JSON格式,使用json()解析时不需要手动进行编解码操作。
3.4异常处理
发送请求时可能出现各种异常,如网络错误、服务器无响应等等。可以使用try...except语句对异常进行处理,例如:
try:
response = requests.get('http://www.baidu.com')
response.raise_for_status()
except requests.exceptions.RequestException:
print('HTTP Request failed')
总结:
通过requests库,可以很容易地发送HTTP请求并处理响应数据,大大简化了HTTP请求的发送和响应处理过程。同时,还需要注意对响应状态码进行判断,以及对异常情况进行适当处理。
