python requests 模块
requests 是 Python 中一个非常流行的用于发送 HTTP 请求的模块。它提供了一个简单易用的接口,可以用来发送各种类型的 HTTP 请求(如 GET、POST、PUT、DELETE 等),并处理响应数据。以下是 requests 模块的主要功能和常见用法:
安装 requests
如果尚未安装,可以使用以下命令安装:
pip install requests
1. 发送 GET 请求
1. requests.get函数是Python requests库中的一个方法,用于发送HTTP GET请求。其基本语法如下:
response = requests.get(url, params=None, **kwargs)
url:需要发送GET请求的URL地址。
params:可选参数,用于在URL中添加查询字符串参数,参数应以字典形式传递。
**kwargs:其他可选参数,如headers、timeout等,用于控制请求的其他方面。
2. requests.get函数的返回值内容
requests.get函数返回一个Response对象,该对象包含了服务器对请求的响应。Response对象包含以下常用属性和方法:
status_code:HTTP响应状态码(如200表示成功)。
text:响应内容的字符串表示,自动根据响应头中的字符编码进行解码。
content:响应内容的原始字节串,不会自动解码。
json():如果响应内容是JSON格式,该方法会将其解析为Python字典或列表。
headers:一个字典,包含服务器响应的所有头部信息。
url:最终响应的URL(可能经过重定向)。
encoding:响应内容的编码格式。
cookies:从响应头中提取的cookie信息。
elapsed:从发送请求到接收响应所花费的时间(timedelta对象)。
3. 如何处理requests.get的返回值
处理requests.get的返回值通常涉及以下几个步骤:
获取响应状态码,检查请求是否成功。
根据需要获取响应内容(文本、字节串或JSON)。
处理响应头或其他响应信息。
requests.get函数范例
import requestsresponse = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code) # 状态码
print(response.text) # 响应文本
print(response.json()) # 如果返回 JSON 数据,可以用 .json() 方法解析
2. 发送 POST 请求
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.status_code)
print(response.json())
3. 自定义 Headers
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://api.example.com/data', headers=headers)
print(response.json())
4. 发送带参数的请求
params = {'q': 'python', 'sort': 'stars'}
response = requests.get('https://api.github.com/search/repositories', params=params)
print(response.json())
5. 上传文件
python
复制代码
files = {'file': open('example.txt', 'rb')}
response = requests.post('https://example.com/upload', files=files)
print(response.status_code)
6. 设置超时
response = requests.get('https://example.com', timeout=5) # 设置超时时间为 5 秒
7. 处理重定向
默认情况下,requests 会自动处理重定向:
response = requests.get('http://github.com') # 自动跳转到 https://github.com
print(response.url) # 重定向后的 URL
可以通过设置 allow_redirects=False 禁用自动重定向:
response = requests.get('http://github.com', allow_redirects=False)
8. 发送带认证的请求
from requests.auth import HTTPBasicAuth
response = requests.get('https://api.example.com/basic-auth', auth=HTTPBasicAuth('user', 'pass'))
print(response.status_code)
捕获异常
使用 try-except 来处理网络请求中的异常:
try:
response = requests.get('https://example.com', timeout=5)
response.raise_for_status() # 检查 HTTP 状态码
print(response.json())
except requests.exceptions.Timeout:
print('请求超时')
except requests.exceptions.RequestException as e:
print(f'请求失败: {e}')
常用的 requests 方法
requests.get(url, params=None, **kwargs):发送 GET 请求。
requests.post(url, data=None, json=None, **kwargs):发送 POST 请求。
requests.put(url, data=None, **kwargs):发送 PUT 请求。
requests.delete(url, **kwargs):发送 DELETE 请求。
requests.head(url, **kwargs):发送 HEAD 请求。
requests.options(url, **kwargs):发送 OPTIONS 请求。
requests 是一个功能强大、简单易用的 HTTP 库,适合绝大多数 HTTP 请求场景。
« python 如何读取超大的文件
|
如何给自己充电?»
热门日志
分类
- Django(4)
- ssdb(1)
- Mac(7)
- C(1)
- memcache(1)
- Python(32)
- Vim(8)
- sed(2)
- ansible(3)
- awk(4)
- shell(3)
- about(1)
- git(9)
- bat(4)
- svn(0)
- docker(1)
- Tornado(1)
- go(2)
- 架构(18)
- Vue(1)
- game(2)
- Html(6)
- Java(8)
- Mysql(37)
- Ajax(2)
- Jsp(1)
- Struts(8)
- Linux(72)
- JavaScript(39)
- Staruml(0)
- Mouth(1)
- Php(102)
- Windows(8)
- Message(48)
- Lua(10)
- Compute(1)
- Redis(7)
- Nginx(12)
- Jquery(1)
- Apache(1)
- cocos2d-x(8)