📜  讨论Requests(1)

📅  最后修改于: 2023-12-03 14:57:37.072000             🧑  作者: Mango

Requests讨论

Requests是一个流行的Python第三方库,它提供了一种简单而又优雅的方式来发送HTTP/1.1请求,让程序员能够方便地和Web服务交互。

安装
pip install requests
发送HTTP请求

使用Requests发送HTTP请求非常简单。熟悉HTTP协议的开发人员会发现,Requests中的API非常符合RESTful规范。

发送GET请求
import requests

response = requests.get('https://www.example.com')
print(response.content)
发送POST请求
import requests

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com', data=payload)
print(response.content)
响应

管理HTTP响应是很容易的,可以使用response对象的属性和方法来检查响应状态和内容。

response属性
  • status_code - HTTP响应状态码,比如200表示成功,404表示页面不存在等。
  • headers - 以字典形式返回HTTP响应头。
  • text - HTTP响应内容的unicode形式。
  • content - HTTP响应内容的二进制形式。
  • json() - 如果响应内容是JSON格式,可以使用json()方法返回解析后的JSON数据。
response方法
  • raise_for_status() - 抛出HTTPError异常(如果响应状态码不是200),否则不做任何事情。
  • iter_lines() - 以迭代器形式返回响应内容的每一行。
参数

Requests让你可以传递表单或多部分参数,以及定制HTTP头等。

表单参数
import requests

payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com', data=payload)
print(response.content)
多部分参数
import requests

files = {'file': open('filename', 'rb')}
payload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://www.example.com', data=payload, files=files)
print(response.content)
头部参数
import requests

headers = {'user-agent': 'Mozilla/5.0'}
response = requests.get('https://www.example.com', headers=headers)
print(response.content)
异常处理

Requests可以自动处理HTTP状态码和网络异常,但是这并不意味着你不需要自己处理异常情况。Requests提供了一系列异常类型来处理各种错误。

异常类型
  • requests.ConnectionError - 网络连接错误。
  • requests.HTTPError - HTTP异常错误。
  • requests.RequestException - 由于未知原因发生的异常。
SSL证书验证

默认情况下,Requests会验证服务器的SSL证书。如果你不想验证SSL证书,可以设置verify参数为False。

import requests

response = requests.get('https://www.example.com', verify=False)
print(response.content)
会话对象

当你需要在多个请求之间保持某些参数时,例如HTTP头和Cookie值,你可以使用Requests的会话对象。

import requests

s = requests.Session()
s.headers.update({'user-agent': 'Mozilla/5.0'})
s.get('https://www.example.com')
结论

Requests是一个非常实用的Python第三方库,它让HTTP请求处理变得非常简单。开发人员不再需要手动构建HTTP请求并解析响应,而是可以专注于自己的应用逻辑。