json - 如何动态更改 Python API 调用中的参数
问题描述
我正在尝试在 Python 的 API 调用中动态更改页面参数,以便可以访问 Vimeo 上文件的所有 JSON 数据。我不明白的是如何动态更改参数而不是硬编码数字。正如您在下面的代码中看到的,“页面”为 3,但我不明白如何插入参数,因此我可以遍历页面并获取每个页面的 JSON 数据。谢谢您的帮助。
uri = 'https://api.vimeo.com/me/videos'
# Asking the JSON to only get the two fields we are interested in
response = v.get(uri, params={'fields': 'name, uri', 'page': 3, 'per_page': 100})
这是 API 返回的一部分。
{
'total': 3278,
'page': 1,
'per_page': 100,
'paging': {
'next': '/me/videos?fields=name%2C%20uri&per_page=100&page=2',
'previous': None,
'first': '/me/videos?fields=name%2C%20uri&per_page=100&page=1',
'last': '/me/videos?fields=name%2C%20uri&per_page=100&page=33'
},
'data': [
{
'uri': '/videos/356967749',
'name': 'Connecting Smallholder Farmers to Science'
},
{
'uri': '/videos/356880620',
'name': 'pro_test_upload'
},
{
'uri': '/videos/356880402',
'name': 'Amazing Apollo Stories with Charles Fishman'
},
{
'uri': '/videos/356728892',
'name': 'tot_190829'
},
{
'uri': '/videos/356481229',
'name': 'com_acw_johnson.mov'
},
...
}
解决方案
使用第一页获取结果总数,然后使用该值进行分页:
import math
uri = 'https://api.vimeo.com/me/videos'
first_page = requests.get(
uri,
params={
'fields': 'name, uri',
'page': 1,
'per_page': 100}).json()
total_pages = math.ceil(first_page["total"] / first_page["per_page"])
for page in total_pages:
response = requests.get(
uri,
params={
'fields': 'name, uri',
'page': page,
'per_page': 100})
# do things
推荐阅读
- php - PHP在关联数组中转换数组数组
- 3d - 如何通过平均值合并 3D 点云中足够接近的点
- php - Laravel 中的 url 和 path 有什么区别?我可以使用路径来加载 JavaScript 或 CSS 吗?
- html - Angular Material:自定义表单字段控件 - 移动浮动标签(向下)
- java - 是否可以按类类型而不是接口类型注入 EJB bean
- perl - HTTP::Cookies 到 Mojo::UserAgent::CookieJar
- html - 折叠菜单的第一个元素应该显示,其余的应该隐藏 angular6
- django - 如何在特定单位的查询集中注释 postgis 距离?
- ssas - 文化 EN 引用和类型 X 的对象的翻译,名称为 X,但该对象已被删除
- python - 向现有 json 文件添加密钥