Python函数库requests的基本用法:发送HTTP请求并获取响应数据
Python中有很多用于发送HTTP请求的函数库,其中比较流行和强大的是requests,它可以方便地发送HTTP请求并获取响应数据,支持HTTP/1.1和HTTP/2协议,使用起来非常简单。下面我就来介绍一下requests的基本用法。
## 安装requests库
如果你使用的是Python3,那么requests库应该已经安装好了,可以直接开始使用。如果你使用的是Python2,需要先安装requests库,可以使用pip install requests命令来安装。
## 发送HTTP请求
使用requests发送HTTP请求非常简单,只需要选择合适的HTTP方法(GET、POST、PUT等),把请求的URL和参数传递进去即可,requests会自动处理请求头、请求体等内容。以下是一个使用requests发送GET请求的例子:
import requests
response = requests.get('http://www.example.com')
print(response.text)
以上代码中,先使用requests库的get方法发送一个GET请求,然后把响应结果存到response变量里,最后打印出响应数据。
如果需要传递参数,可以在URL后面添加查询字符串,也可以使用params参数传递:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('http://www.example.com', params=payload)
print(response.url)
print(response.text)
以上代码中,使用了params参数传递了两个查询参数,requests会自动把参数转化为查询字符串并添加到URL后面,最后打印出完整的URL和响应数据。
如果需要发送POST请求,需要先创建一个字典类型的参数,然后使用requests的post方法发送请求,以下是一个POST请求的例子:
import requests
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://www.example.com', data=payload)
print(response.text)
以上代码中,首先创建了一个字典类型的参数,然后使用post方法发送POST请求,把参数传递进去,最后打印出响应数据。
## 处理响应数据
requests库会自动解析HTTP响应,提供一些有用的响应数据,例如响应状态码、响应头、响应体等。以下是一个处理响应数据的例子:
import requests
response = requests.get('http://www.example.com')
print(response.status_code)
print(response.headers)
print(response.text)
以上代码中,使用了以下三个属性:
- status_code:响应的状态码,例如200表示成功,404表示未找到,500表示服务器错误等。注意只有状态码是2xx才表示请求成功。
- headers:响应头,是一个字典类型的对象,包含了所有响应头信息。
- text:响应体,是服务器返回的文本格式的内容。如果服务器返回的是二进制格式的内容,可以使用content属性。
## 处理异常
requests库会自动处理HTTP响应的错误,例如连接超时、DNS错误等,但有时还是会出现异常,需要特殊处理。以下是一个处理异常的例子:
import requests
try:
response = requests.get('http://www.example.com')
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(e)
以上代码中,使用了try-except语句,把请求代码放在try块里,如果出现异常会跳转到except块处理,并把异常信息打印出来。raise_for_status方法是一个检查状态码的方法,如果返回的状态码不是2xx,则会抛出一个HTTPError异常。
## 总结
requests库是一个非常方便和强大的HTTP请求库,可以用来发送各种类型的HTTP请求和处理HTTP响应。它支持请求的各种参数、表单数据、文件上传等,并提供了多种方法来解析返回的响应数据。在编写Python程序时,requests是一个优秀的HTTP客户端函数库,值得推荐和使用。
