欢迎访问宙启技术站
智能推送

如何使用Python的requests库发送HTTP请求并处理响应?

发布时间:2023-06-16 16:27:38

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请求的发送和响应处理过程。同时,还需要注意对响应状态码进行判断,以及对异常情况进行适当处理。