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

Python中的requests库:如何进行网络请求操作

发布时间:2023-06-21 04:27:58

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头等等细节问题,为我们提供了便利。