首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取卫士API的所有文章

获取卫士API的所有文章
EN

Stack Overflow用户
提问于 2020-04-05 01:17:48
回答 2查看 317关注 0票数 0

我使用了卫报新闻api来获取数据。然后it文档说,结果以分页列表的形式返回,默认情况下,每页包含10个条目。输出JSON如下所示。卫报文档可以找到here

代码语言:javascript
复制
{
    "response": {
        "status": "ok",
        "userTier": "developer",
        "total": 8174,
        "startIndex": 1,
        "pageSize": 10,
        "currentPage": 1,
        "pages": 818,
        "orderBy": "relevance",
        "results": []
}

我想收集10个实体的所有数据(例如总共8174个)。有没有办法获取所有数据?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-07 12:26:50

我找到了答案。Default guardian每页获取10个条目。我们可以使用API中的page-size参数来覆盖默认值,并提供所需的数据计数。

代码语言:javascript
复制
https://content.guardianapis.com/search?q={query}&page-size={data count}
票数 1
EN

Stack Overflow用户

发布于 2021-09-21 11:50:38

您的解决方案并不是在所有情况下都有效,因为对page-size参数通常有限制。对于卫报API,目前是200。

如果你需要的项目比你在一次API调用中得到的项目还多,那么简单地使用一个确定的循环(如果你知道你需要多少个页面)或者一个开放的while循环来迭代页面,如果你想获取所有的东西,例如

代码语言:javascript
复制
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!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61031878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档