如何使用Python中的requests库来进行HTTP请求?
Requests是一个Python的HTTP库。它有很多优点,让我们可以用简单的方式进行HTTP请求。Requests库提供了很多方法,比如get、post、put、delete等,以便我们可以发送HTTP请求至API或其他服务器。
使用requests库之前,首先必须安装它。我们可以使用pip命令来安装它。在终端窗口中输入:
pip install requests
这会在Python环境中自动安装requests库。现在,让我们开始使用它!
GET请求
--------
GET请求是最简单的HTTP请求。它通常用于从服务器获取数据。我们可以使用requests库轻松地进行GET请求,例如使用接口从服务器中获取数据。例如:
import requests
response = requests.get('https://jsonplaceholder.typicode.com/todos/1')
print(response.json())
这个例子中,我们使用requests.get()方法从API中获取到了数据。它使用的是一个Fake Online REST API。jsonplaceholder.typicode.com是一个用于测试的虚拟REST API,在这个API中,我们可以使用协议和主机名来获取响应。
在这个例子中,我们从Todo列表中获取了ID为1的任务。response.json()方法将服务器响应的信息解析为JSON格式。
POST请求
--------
POST请求比GET请求稍微复杂一些,但我们可以轻松编写一个POST请求,例如创建一个新用户。我们可以使用requests.post()方法来进行POST请求,例如:
import requests
response = requests.post('https://jsonplaceholder.typicode.com/users', json={'name': 'John Doe', 'email': 'johndoe@example.com'})
print(response.json())
这个例子中,我们向API提交了name和email字段,以创建一个新用户。我们使用了requests.post()方法来向服务器发送请求。这个方法需要传递一个URL和一些必要的参数。在这个例子中,我们使用了名为json的参数(payload),用于传递请求的JSON数据。response.json()方法将目标URL返回的JSON数据解析为Python字典类型。
PUT请求
-------
PUT请求用于向服务器更新数据。我们可以使用requests.put()方法来发送PUT请求。在下面的例子中,我们将更新ID为1的任务。
import requests
response = requests.put('https://jsonplaceholder.typicode.com/todos/1', json={'title': 'updated title', 'completed': True})
print(response.json())
在这个例子中,我们使用了requests.put()方法向URL发送PUT请求。我们通过json参数(payload)向服务器发送JSON数据。
DELETE请求
----------
DELETE请求用于从服务器中删除数据。我们可以使用requests.delete()方法来发送DELETE请求。
import requests
response = requests.delete('https://jsonplaceholder.typicode.com/todos/1')
print(response.content)
在这个例子中,我们使用了requests.delete()方法,向URL提交了一个DELETE请求,从服务器中删除ID为1的数据。
HTTP请求头部和认证
----------------
我们可以向HTTP请求头部中添加任意数量的元数据。在requests库中,HTTP头信息保存在字典对象中。例如:我们可以向请求的头文件中添加一个键值对'content-type': 'application/json'来指定发送JSON数据。
import requests
url = 'https://httpbin.org/post'
payload = {'name': 'John Doe', 'email': 'johndoe@example.com'}
headers = {'content-type': 'application/json'}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
输出:
{
"args": {},
"data": "{\"name\": \"John Doe\", \"email\": \"johndoe@example.com\"}",
"files": {},
"form": {},
"headers": {
"Accept-Encoding": "gzip, deflate, br",
"Accept": "*/*",
"Content-Length": "49",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.22.0",
"X-Amzn-Trace-Id": "Root=1-5f6b1562-a33c80be8c944d6d40b2a09b"
},
"json": {
"email": "johndoe@example.com",
"name": "John Doe"
},
"origin": "183.91.19.81",
"url": "https://httpbin.org/post"
}
我们还可以添加认证信息到我们的HTTP请求中。我们可以使用HTTPBasicAuth或OAuth认证方式。例如:
import requests
url = 'https://api.github.com/user'
response = requests.get(url, auth=('username', 'password'))
print(response.json())
这个例子中,我们使用requests.get()方法向API发送请求。我们使用了auth参数来指定HTTPBasicAuth认证方式。
这就是requests库的一些基本用法。使用requests库,我们可以轻松地发送HTTP请求,并从API中获取到所需的数据。Requests库跟踪网页的cookies和即时获取网页内容、处理JSON格式转换。另外,它还能处理代理、SSL连接、绕过SSL等问题。
