Python-Requests模块详解

2023-10-11 18:52:03 浏览数 (2)

Python Requests模块详解

Requests模块是Python中最简单易用的HTTP客户端库,可以极大简化发送HTTP请求的代码

1. 发送GET请求

使用requests.get()发送GET请求,只需要传入URL即可:

代码语言:javascript复制
import requests

resp = requests.get('http://example.com/api')

此外还可以传入其他参数,如headers, params等。

2. 获取响应

发送请求后可以获取Server响应信息:

  • resp.status_code: 响应状态码
  • resp.headers: 响应头部信息
  • resp.text/content: 响应内容,text为字符串,content为字节
  • resp.json(): 将JSON响应解析为字典或列表

示例:

代码语言:javascript复制
print(resp.status_code) 
print(resp.headers['Content-Type'])
print(resp.json())
3. POST请求

使用requests.post()发送POST请求,传入data作为POST body:

代码语言:javascript复制
data = {'key1': 'value1', 'key2': 'value2'}
resp = requests.post(url, data=data) 

也可以传入json参数发送JSON格式的数据:

代码语言:javascript复制
data = {'key': 'value'}
resp = requests.post(url, json=data)
4. 请求参数

通过params参数传递URL查询参数:

代码语言:javascript复制
params = {'key1': 'value1', 'key2': 'value2'}  
resp = requests.get(url, params=params)

这会构造一个如下的URL:

代码语言:javascript复制
http://example.com?key1=value1&key2=value2
5. 请求头部

通过headers参数设置HTTP头部信息:

代码语言:javascript复制
headers = {'User-Agent': 'MyBrowser'}
resp = requests.get(url, headers=headers)
6. 超时设置

通过timeout参数设置超时时长(秒):

代码语言:javascript复制
resp = requests.get(url, timeout=3) # 设置3秒超时
7. 会话对象

使用requests.Session()创建会话对象,用于跨请求保持参数:

代码语言:javascript复制
s = requests.Session()
s.headers.update({'x-test': 'true'})

resp1 = s.get(url1)  
resp2 = s.get(url2)

此外,Requests模块还支持文件上传、连接池、SSL证书验证等高级功能,非常强大!

Requests模块高级用法

1. 文件上传

使用files参数上传文件:

代码语言:javascript复制
url = 'http://example.com/upload'
files = {'file': open('report.xls', 'rb')}

r = requests.post(url, files=files)

可以设置文件名、文件对象和MIME类型:

代码语言:javascript复制
files = {'file': ('report.xls', open('report.xls','rb'), 'application/vnd.ms-excel')}

上传多个文件:

代码语言:javascript复制
files = {
    'file1': ('image.jpg', open('image.jpg','rb'), 'image/jpeg'),
    'file2': ('report.xls', open('report.xls','rb'), 'application/vnd.ms-excel')
}

r = requests.post(url, files=files)
2. 连接池

使用requests.Session()创建连接池:

代码语言:javascript复制
s = requests.Session()

s.get('http://httpbin.org/get')  
s.get('http://httpbin.org/get') 

自定义连接池:

代码语言:javascript复制
adapter = HTTPAdapter(pool_connections=100, pool_maxsize=100)
s.mount('http://', adapter)
3. SSL证书验证

忽略验证:

代码语言:javascript复制
r = requests.get(url, verify=False) 

使用系统/自定义证书:

代码语言:javascript复制
r = requests.get(url, verify='/path/to/cert.pem')

使用证书字符串:

代码语言:javascript复制
cert = '''-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----'''

r = requests.get(url, verify=cert)

以上是对Requests模块文件上传、连接池和SSL证书验证等高级功能的详细介绍。

以上概括了Requests最主要的用法,希望对你有帮助!

0 人点赞