Python中的requests库:如何进行网络请求操作
Python中的requests库是一个用于向HTTP服务器发送请求的第三方库。它使得HTTP请求的发送变得更加容易和方便,而且还能够自动处理很多让人头疼的细节问题,例如cookie处理、HTTP请求头、代理、SSL验证等等。
使用requests库,我们可以轻松地实现GET和POST两种最常用的HTTP请求方法,同时还支持完整的HTTP请求方法,例如PUT、DELETE、HEAD等等。下面我们来详细介绍一下如何使用requests库进行网络请求操作。
1. 发送HTTP GET请求
在使用requests库发送GET请求时,可以直接使用requests.get()方法,该方法接收一个URL作为参数,返回一个响应对象。
例如,我们要请求的URL是http://www.example.com,则代码如下:
import requests
response = requests.get('http://www.example.com')
上述代码中,使用requests.get()方法发送了一个GET请求,并将响应结果保存在了response变量中。如果请求成功,我们可以通过response.text属性来获取响应的内容。
# 获取响应内容 content = response.text print(content)
2. 发送HTTP POST请求
在使用requests库发送POST请求时,可以直接使用requests.post()方法,该方法接收两个参数,一个是URL,另一个是HTTP头中所需的数据。下面是一个简单的例子:
import requests
# 设置要POST的数据
payload = {'key1': 'value1', 'key2': 'value2'}
# 发送POST请求
response = requests.post('http://www.example.com', data=payload)
# 输出响应内容
print(response.text)
上述代码中,我们通过payload字典设置了POST请求所需的数据,并将该字典作为data参数传递给requests.post()方法。
3. 设置HTTP头和Cookie
在使用requests库发送HTTP请求时,我们可以设置HTTP头和Cookie,这对于一些需要身份验证或接口限制的场景非常有用。
设置HTTP头的方法很简单,只需要在发送请求时,通过headers参数传递一个字典即可,例如:
import requests
headers = {'user-agent': 'Mozilla/5.0'}
response = requests.get('http://www.example.com', headers=headers)
print(response.text)
上述代码中,我们在headers字典中设置了user-agent头,这样服务器就会认为我们是使用Mozilla/5.0浏览器访问的。
设置Cookie的方法也很简单,只需要在发送请求时,通过cookies参数传递一个字典即可,例如:
import requests
cookies = {'sessionid': '123456'}
response = requests.get('http://www.example.com', cookies=cookies)
print(response.text)
上述代码中,我们在cookies字典中设置了sessionid的值为123456,这样服务器就可以根据该sessionid来识别我们的身份了。
4. 响应对象的属性和方法
在使用requests库发送HTTP请求时,我们会得到一个响应对象。我们可以通过这个响应对象的属性和方法,来获取响应的各种信息,例如响应状态码、响应头、响应内容等等。
下面介绍一些常用的响应对象属性和方法:
- status_code:响应状态码
- headers:响应头
- text:响应内容(字符串形式)
- content:响应内容(字节形式)
- json():响应内容(JSON格式)
例如,我们可以通过以下方法获取HTTP响应状态码:
import requests
response = requests.get('http://www.example.com')
# 获取响应状态码
status_code = response.status_code
print(status_code)
5. 异常处理
在使用requests库发送HTTP请求时,由于各种原因,可能会遇到各种异常。因此,我们需要对这些异常情况进行处理,以便程序能够正常运行。
requests库中常见的异常包括:
- requests.exceptions.RequestException
- requests.exceptions.Timeout
- requests.exceptions.ConnectionError
- requests.exceptions.HTTPError
我们可以使用try-except语句来捕获这些异常,并进行相应的处理,例如给出错误提示或重试请求等等。下面是一个示例代码:
import requests
try:
# 发送HTTP请求
response = requests.get('http://www.example.com')
# 如果响应状态码不正常,抛出异常
response.raise_for_status()
except requests.exceptions.RequestException as e:
# 发生异常时,输出错误信息
print(e)
上述代码中,我们使用try-except语句,捕获了requests.exceptions.RequestException异常并输出错误信息。另外,如果响应状态码不正常,我们还可以通过response.raise_for_status()方法来抛出异常。
总而言之,requests库是Python中一个非常实用的HTTP请求库,它简化了HTTP请求的过程,使得请求过程变得更加方便和高效。通过使用requests库,我们可以很轻松地实现GET和POST等最常用的HTTP请求方法,并且还能够自动处理Cookie、HTTPS、HTTP头等等细节问题,为我们提供了便利。
