获取所有文章卫报API



我使用了卫报新闻api来获取数据。然后它的文档说,结果以分页列表的形式返回,默认情况下,每页包含10个条目。我得到的输出JSON是这样的。监护人文件可以在这里找到

{
"response": {
"status": "ok",
"userTier": "developer",
"total": 8174,
"startIndex": 1,
"pageSize": 10,
"currentPage": 1,
"pages": 818,
"orderBy": "relevance",
"results": []
}

我想收集10个实体的所有数据(示例中总共8174个(实例。有什么方法可以获取所有数据吗?

我找到了答案。默认监护人每页获取10个条目。我们可以使用API中的page-size参数覆盖默认值,并提供所需的数据计数。
https://content.guardianapis.com/search?q={query}&page-size={data count}

您的解决方案不会在所有情况下都起作用,因为页面大小参数通常有限制。对于卫报API来说,目前是200。

如果你需要的项目比你一次调用API所能得到的要多,只需用一个明确的循环(如果你知道你需要多少页面(或用一个开放的while循环(如果您想获取所有内容,例如(来迭代页面

current_page = 1
total_pages = 1
while current_page <= total_pages:
try:
r = requests.get(url, params)
r.raise_for_status()
except:
SystemExit(err)
current_page += 1
total_pages = r.json()['response']['pages']

附言:添加一条退出while循环的方法总是很好的。如果某个东西失败了,你不想永远用请求淹没api!

最新更新