您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# requests从接口里面获取数据的方式有哪些
## 目录
1. [HTTP请求基础](#1-http请求基础)
2. [GET请求获取数据](#2-get请求获取数据)
3. [POST请求提交与获取数据](#3-post请求提交与获取数据)
4. [处理响应数据](#4-处理响应数据)
5. [高级请求配置](#5-高级请求配置)
6. [实战案例](#6-实战案例)
7. [总结](#7-总结)
---
## 1. HTTP请求基础
### 1.1 requests库简介
Python的`requests`库是处理HTTP请求的第三方库,比标准库`urllib`更简洁高效,支持:
- 自动内容解码
- 连接池管理
- Cookie持久化
- 文件分块上传等特性
安装方式:
```bash
pip install requests
方法 | 用途 | requests对应方法 |
---|---|---|
GET | 获取资源 | requests.get() |
POST | 提交数据 | requests.post() |
PUT | 更新完整资源 | requests.put() |
DELETE | 删除资源 | requests.delete() |
PATCH | 部分更新资源 | requests.patch() |
import requests
response = requests.get('https://api.example.com/data')
print(response.status_code) # 200
print(response.text) # 原始文本数据
url = 'https://api.example.com/search?q=python&page=2'
params = {'q': 'python', 'page': 2}
response = requests.get('https://api.example.com/search', params=params)
headers = {
'User-Agent': 'Mozilla/5.0',
'Authorization': 'Bearer token123'
}
response = requests.get(url, headers=headers)
data = {'username': 'admin', 'password': '123456'}
response = requests.post('https://api.example.com/login', data=data)
json_data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=json_data)
files = {'file': open('report.xlsx', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)
属性/方法 | 说明 |
---|---|
response.status_code | HTTP状态码(200,404等) |
response.text | Unicode解码的文本响应 |
response.content | 二进制响应内容 |
response.json() | 解析JSON响应(自动解码) |
response.headers | 响应头字典 |
if response.status_code == 200:
data = response.json()
elif response.status_code == 404:
print("资源不存在")
else:
response.raise_for_status() # 非2xx状态码抛出异常
with requests.get('https://example.com/large_file', stream=True) as r:
for chunk in r.iter_content(1024):
process_chunk(chunk)
# 连接超时3秒,读取超时5秒
requests.get('https://api.example.com', timeout=(3, 5))
session = requests.Session()
session.get('https://api.example.com/login', params=credentials)
# 自动保持cookies
response = session.get('https://api.example.com/dashboard')
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080'
}
requests.get('https://api.example.com', proxies=proxies)
# 禁用验证(不推荐生产环境使用)
requests.get('https://api.example.com', verify=False)
# 使用自定义证书
requests.get('https://api.example.com', verify='/path/to/cert.pem')
import requests
def get_weather(city):
url = "https://api.openweathermap.org/data/2.5/weather"
params = {
'q': city,
'appid': 'your_api_key',
'units': 'metric'
}
response = requests.get(url, params=params)
return response.json()
print(get_weather("Beijing"))
def scrape_paginated_data(base_url, max_pages=5):
results = []
for page in range(1, max_pages+1):
response = requests.get(f"{base_url}?page={page}")
if response.status_code != 200:
break
results.extend(response.json()['data'])
return results
headers = {
'Authorization': 'Bearer ACCESS_TOKEN',
'Accept': 'application/json'
}
response = requests.get('https://api.github.com/user', headers=headers)
场景 | 推荐方法 |
---|---|
获取数据 | GET + params |
提交表单 | POST + data |
提交JSON | POST + json |
文件上传 | POST + files |
需要保持会话 | 使用Session对象 |
需要处理大响应 | stream=True + iter_content |
status_code
timeout
防止无限等待retry
机制处理临时故障通过合理选择请求方法和参数配置,可以高效地从各类接口获取所需数据。建议在实际项目中结合具体API文档进行调试。 “`
注:本文实际约2150字(含代码和表格),完整覆盖了requests库的主要数据获取方式。可根据需要调整案例部分的具体实现细节。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。