我使用了卫报新闻api来获取数据。然后it文档说,结果以分页列表的形式返回,默认情况下,每页包含10个条目。输出JSON如下所示。卫报文档可以找到here
{
"response": {
"status": "ok",
"userTier": "developer",
"total": 8174,
"startIndex": 1,
"pageSize": 10,
"currentPage": 1,
"pages": 818,
"orderBy": "relevance",
"results": []
}我想收集10个实体的所有数据(例如总共8174个)。有没有办法获取所有数据?
发布于 2020-04-07 12:26:50
我找到了答案。Default guardian每页获取10个条目。我们可以使用API中的page-size参数来覆盖默认值,并提供所需的数据计数。
https://content.guardianapis.com/search?q={query}&page-size={data count}发布于 2021-09-21 11:50:38
您的解决方案并不是在所有情况下都有效,因为对page-size参数通常有限制。对于卫报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!
https://stackoverflow.com/questions/61031878
复制相似问题