【问题标题】:Get all articles Guardian API获取所有文章 Guardian API
【发布时间】:2020-04-04 17:17:48
【问题描述】:

我使用 Guardian News api 来获取数据。然后它的文档说,结果作为分页列表返回,默认情况下,每页包含 10 个条目。我得到这样的输出JSON。监护人文档可以找到here

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

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

【问题讨论】:

    标签: api guardian


    【解决方案1】:

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

    https://content.guardianapis.com/search?q={query}&page-size={data count}
    

    【讨论】:

      【解决方案2】:

      您的解决方案并非在所有情况下都有效,因为通常对 page-size 参数有限制。 Guardian 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!

      【讨论】:

      • 您是否也知道如何使用 Guardian API 获取拼图的内容,例如填字游戏?它在 HTML 中,但默认情况下 API 似乎不会返回它。
      • “填字游戏的内容”是什么意思?你是说线索吗?您是否尝试过使用 API 网站的“探索”工具?我设法用“内容”API 和 q="crossword" 拉出填字游戏。这有帮助吗?
      • 没错。线索和答案。你能得到那些吗?即使我在 API 中使用单项 URL,它也不会返回线索和答案,只返回周围的上下文。我编写了一个小型网络爬虫来收集这些数据,但我的 IP 地址一直被阻止。
      • 是的。我刚刚使用soup.find_all('div', class_='crossword__clues__text')得到了线索。
      • 是的,如果被退回,很容易找到线索。但对我来说,他们没有得到回报。你有没有用这样的东西来获取页面:payload = { 'api-key': 'KEY', 'page-size': 10, 'show-editors-picks': 'true', 'show-elements': 'image', 'show-fields': 'all' }; response = requests.get('https://content.guardianapis.com/crosswords/cryptic/28551', params=payload)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2017-04-04
      • 2021-07-24
      • 1970-01-01
      • 2013-12-04
      • 2020-08-08
      • 2014-09-08
      相关资源
      最近更新 更多