【问题标题】:concatenate JSON paginated response with python requests将 JSON 分页响应与 python 请求连接起来
【发布时间】:2019-07-18 08:37:45
【问题描述】:

我想将 WordPress API 的 JSON 响应与 Python 的库请求连接起来。这是我的代码:

import requests
results = []
pagination = 1
url = 'https://example.com/wp-json/wp/v2/posts?after=2019-01-01T00:00:00&before=2019-02-01T00:00:00&per_page=5&page={}'.format(pagination)
r = requests.get(url)
data = r.json()
for i in data:
    results.append(i)
while r.status_code == 200:
    pagination += 1
    r = requests.get(url)
    data = r.json()
    for i in data:
        results.append(i)
    else:
        break
print(results)

我只得到了第一页。

【问题讨论】:

  • 您的url 变量是静态的:您更新了pagination 的值,但您从未重新生成格式化的url 字符串,因此无论有多少请求,您总是在请求第一页你做的。

标签: python json python-requests


【解决方案1】:

您在最初格式化 URL 时绑定了该值,这永远不会再次更新。

可能更容易传递您的一些params as a dictionary to requests 而不是在 URL 上,并在每次迭代时更新分页,例如:

import requests
results = []
pagination = 1
url = 'https://example.com/wp-json/wp/v2/posts?after=2019-01-01T00:00:00&before=2019-02-01T00:00:00'
params = {'per_page': 5, 'page': pagination}
r = requests.get(url, params=params)
data = r.json()
for i in data:
    results.append(i)
while r.status_code == 200:
    pagination += 1
    params['page'] = pagination
    r = requests.get(url, params=params)
    data = r.json()
    for i in data:
        results.append(i)
    else:
        break
print(results)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多