Python——requests入门到出门

目录

1.安装requests库

2.发送HTTP请求

2.1 发送GET请求

2.2 发送POST请求

3.处理响应

3.1 获取响应状态码

3.2 获取响应头部信息

3.3 获取响应内容

4.请求参数

4.1 URL参数

4.2 请求头

4.3 请求体

5.错误处理

5.1 连接超时

5.2 请求超时

5.3 请求被拒绝

6.会话管理

6.1 创建会话

6.2 共享会话

7.SSL验证和代理

7.1 禁用SSL验证

7.2 使用代理

总结


Python的requests库是一个非常流行的HTTP客户端库,它提供了一种简单的方式来发送HTTP/1.1请求,并且能够与任何基于HTTP的API进行交互。在本文中,我将介绍如何使用requests库,并提供一些常用的示例,从而帮助你从入门到出门。

1.安装requests库

要使用requests库,你需要先安装它。你可以通过以下命令在终端中安装requests:

pip install requests

在安装完成后,你可以在Python脚本中导入requests库:

import requests

2.发送HTTP请求

requests库提供了几种不同的方法来发送HTTP请求,包括GET、POST、PUT、DELETE等。下面我们将介绍如何使用requests发送GET和POST请求。

2.1 发送GET请求

要发送GET请求,你可以使用requests库的get()方法。例如,要从https://www.baidu.com获取网页内容,你可以使用以下代码:

import requests

response = requests.get('https://www.baidu.com')
print(response.text)

在这个例子中,我们使用requests.get()方法发送了一个HTTP GET请求,并将响应保存在response变量中。我们可以使用response.text属性获取响应的文本内容,并将其打印到控制台上。

2.2 发送POST请求

要发送POST请求,你可以使用requests库的post()方法。例如,要向http://httpbin.org/post发送一个包含JSON数据的POST请求,你可以使用以下代码:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', json=data)
print(response.json())

在这个例子中,我们使用requests.post()方法发送了一个HTTP POST请求,并将包含JSON数据的字典作为参数传递给了json参数。我们可以使用response.json()方法获取响应的JSON内容,并将其打印到控制台上。

3.处理响应

当你发送HTTP请求后,你将会收到一个响应对象。这个响应对象包含了HTTP响应的状态码、头部信息和响应内容。下面我们将介绍如何处理这个响应对象。

3.1 获取响应状态码

要获取响应状态码,你可以使用response.status_code属性。例如,要获取上面的例子中http://httpbin.org/post响应的状态码,你可以使用以下代码:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', json=data)
print(response.status_code)

在这个例子中,我们使用response.status_code属性获取响应的状态码,并将其打印到控制台上。

3.2 获取响应头部信息

要获取响应头部信息,你可以使用response.headers属性。例如,要获取上面的例子中http://httpbin.org/post响应的头部信息,你可以使用以下代码:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', json=data)
print(response.headers)

在这个例子中,我们使用response.headers属性获取响应的头部信息,并将其打印到控制台上。

3.3 获取响应内容

要获取响应内容,你可以使用response.content属性(返回二进制数据)或response.text属性(返回Unicode数据)。例如,要获取上面的例子中http://httpbin.org/post响应的内容,你可以使用以下代码:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', json=data)
print(response.content)
print(response.text)

在这个例子中,我们使用response.content和response.text属性获取响应的内容,并将其打印到控制台上。

4.请求参数

requests库提供了多种方法来传递请求参数。下面我们将介绍如何使用URL参数、请求头和请求体传递请求参数。

4.1 URL参数

要使用URL参数传递请求参数,你可以将参数添加到URL中。例如,要向https://www.baidu.com/search发送一个包含q参数的GET请求,你可以使用以下代码:

import requests

params = {'q': 'python'}
response = requests.get('https://www.baidu.com/search', params=params)
print(response.url)

在这个例子中,我们将包含q参数的字典作为params参数传递给了requests.get()方法。requests库将自动将这些参数添加到URL中,并发送一个GET请求。我们可以使用response.url属性获取完整的请求URL,并将其打印到控制台上。

4.2 请求头

要使用请求头传递请求参数,你可以将参数添加到headers参数中。例如,要向http://httpbin.org/get发送一个包含User-Agent头部的GET请求,你可以使用以下代码:

import requests

headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get('http://httpbin.org/get', headers=headers)
print(response.json())

在这个例子中,我们将包含User-Agent头部的字典作为headers参数传递给了requests.get()方法。requests库将自动将这个头部添加到请求中,并发送一个GET请求。我们可以使用response.json()方法获取响应的JSON内容,并将其打印到控制台上。

4.3 请求体

要使用请求体传递请求参数,你可以将参数添加到data参数中。例如,要向http://httpbin.org/post发送一个包含JSON数据的POST请求,你可以使用以下代码:

import requests

data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://httpbin.org/post', data=data)
print(response.json())

在这个例子中,我们将包含JSON数据的字典作为data参数传递给了requests.post()方法。requests库将自动将这个数据添加到请求体中,并发送一个POST请求。我们可以使用response.json()方法获取响应的JSON内容,并将其打印到控制台上。

5.错误处理

当你发送HTTP请求时,可能会遇到各种错误,例如连接超时、请求超时、请求被拒绝等。requests库提供了一种简单的方式来处理这些错误,从而使你的代码更加健壮。

5.1 连接超时

当你发送HTTP请求时,如果连接超时,requests库将抛出一个ConnectionError异常。例如,要向http://httpbin.org/get发送一个连接超时的GET请求,你可以使用以下代码:

import requests

try:
    response = requests.get('http://httpbin.org/get', timeout=0.1)
    print(response.json())
except requests.exceptions.ConnectionError as e:
    print('ConnectionError:', e)

在这个例子中,我们使用timeout参数指定了连接超时时间(单位为秒)。如果连接超时,requests库将抛出一个ConnectionError异常。我们可以使用try-except语句来捕获这个异常,并将错误信息打印到控制台上。

5.2 请求超时

当你发送HTTP请求时,如果请求超时,requests库将抛出一个Timeout异常。例如,要向http://httpbin.org/get发送一个请求超时的GET请求,你可以使用以下代码:

import requests

try:
    response = requests.get('http://httpbin.org/get', timeout=0.1)
    print(response.json())
except requests.exceptions.Timeout as e:
    print('Timeout:', e)

在这个例子中,我们使用timeout参数指定了请求超时时间(单位为秒)。如果请求超时,requests库将抛出一个Timeout异常。我们可以使用try-except语句来捕获这个异常,并将错误信息打印到控制台上。

5.3 请求被拒绝

当你发送HTTP请求时,如果请求被拒绝,requests库将抛出一个HTTPError异常。例如,要向http://httpbin.org/status/403发送一个被拒绝的GET请求,你可以使用以下代码:

import requests

try:
    response = requests.get('http://httpbin.org/status/403')
    response.raise_for_status()
except requests.exceptions.HTTPError as e:
    print('HTTPError:', e)

在这个例子中,我们使用response.raise_for_status()方法来检查响应是否包含错误码。如果响应包含错误码,requests库将抛出一个HTTPError异常。我们可以使用try-except语句来捕获这个异常,并将错误信息打印到控制台上。

6.会话管理

requests库提供了一种简单的方式来管理HTTP会话,从而使你的代码更加高效。HTTP会话是一种持久化的连接,它可以在多个请求之间共享一些参数,例如Cookies和认证信息。

6.1 创建会话

要创建一个HTTP会话,你可以使用requests.Session()方法。例如,要创建一个会话并发送一个GET请求,你可以使用以下代码:

import requests

session = requests.Session()
response = session.get('http://httpbin.org/cookies/set?name=value')
print(response.json())

在这个例子中,我们使用requests.Session()方法创建了一个会话,并将这个会话保存在session变量中。我们可以使用session.get()方法发送一个GET请求,并自动将Cookies保存在会话中。我们可以使用response.json()方法获取响应的JSON内容,并将其打印到控制台上。

6.2 共享会话

要在多个请求之间共享会话,你可以将会话对象作为参数传递给requests库的其他方法。例如,要在两个请求之间共享Cookies,你可以使用以下代码:

import requests

session = requests.Session()
session.get('http://httpbin.org/cookies/set?name=value')
response = session.get('http://httpbin.org/cookies')
print(response.json())

在这个例子中,我们使用requests.Session()方法创建了一个会话,并将这个会话保存在session变量中。我们使用session.get()方法发送一个GET请求,并自动将Cookies保存在会话中。我们可以使用session.get()方法发送另一个GET请求,并自动将保存在会话中的Cookies发送给服务器。我们可以使用response.json()方法获取响应的JSON内容,并将其打印到控制台上。

7.SSL验证和代理

requests库提供了一些选项来处理SSL验证和代理。下面我们将介绍如何禁用SSL验证和使用代理。

7.1 禁用SSL验证

当你发送HTTPS请求时,requests库默认会验证服务器的SSL证书。如果你想忽略SSL验证,你可以将verify参数设置为False。例如,要向https://www.baidu.com发送一个不验证SSL证书的GET请求,你可以使用以下代码:

import requests

response = requests.get('https://www.baidu.com', verify=False)
print(response.content)

在这个例子中,我们将verify参数设置为False,从而禁用了SSL验证。我们可以使用response.content属性获取响应的二进制内容,并将其打印到控制台上。

7.2 使用代理

当你发送HTTP请求时,如果你想使用代理服务器,你可以将proxies参数设置为包含代理服务器地址和端口号的字典。例如,要向http://httpbin.org/get发送一个使用代理服务器的GET请求,你可以使用以下代码:

import requests

proxies = {'http': 'http://localhost:8080', 'https': 'http://localhost:8080'}
response = requests.get('http://httpbin.org/get', proxies=proxies)
print(response.json())

在这个例子中,我们将proxies参数设置为包含代理服务器地址和端口号的字典。requests库将自动将这个字典中的地址和端口添加到请求中,并使用代理服务器发送请求。我们可以使用response.json()方法获取响应的JSON内容,并将其打印到控制台上。

总结

在本文中,我们介绍了如何使用Python的requests库发送HTTP请求,并处理响应。我们还介绍了如何使用请求参数、错误处理、会话管理、SSL验证和代理等功能。希望这篇文章对你有所帮助,让你更加熟练地使用requests库。

猜你喜欢

转载自blog.csdn.net/qq_48892708/article/details/129873138