获取守护者所有文章 API
Get all articles Guardian API
我使用了卫报api来获取数据。然后它的文档说,结果作为分页列表返回,默认情况下,每页包含 10 个条目。我得到输出 JSON 这样的。监护人文档可以找到 here
{
"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']
p.s。如果某些事情失败了,添加一个退出 while 循环的方法总是好的,你不想永远用请求淹没 api!
我使用了卫报api来获取数据。然后它的文档说,结果作为分页列表返回,默认情况下,每页包含 10 个条目。我得到输出 JSON 这样的。监护人文档可以找到 here
{
"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']
p.s。如果某些事情失败了,添加一个退出 while 循环的方法总是好的,你不想永远用请求淹没 api!