python - 在 GitHub 中获取组织的所有(超过 100 个)存储库
问题描述
我正在使用以下内容来获取组织的存储库。
requests.get('https://api.github.com/orgs/ORG/repos', {'org': 'microsoft', 'per_page': 100})
但是对于像 Google 这样的组织,有 1.9k 个存储库,我想要前 500 个具有最高分叉的存储库。我该怎么做 ??
PS:这
requests.get('https://api.github.com/orgs/ORG/repos', {'org': 'microsoft', 'per_page': 500})
仅提供 100 个存储库(最多 100 个)。
解决方案
出于某种原因,这些类型的请求受到 Github 的速率限制。他们声称提出这些大型请求对他们来说是昂贵的。有关他们的推理,请参阅此链接:https ://github.community/t/github-api-v3-pagination-limit/14106
但是有一种方法可以让额外的存储库超过 100 个。让我们看看这里的文档:Github API v3
响应中的 Link 标头包含分页信息:
链接:https ://api.github.com/user/repos?page=3&per_page=100 ;rel="next",
https://api.github.com/user/repos?page=50&per_page=100;rel="最后"
响应标头为您提供下一页和最后一页。您可以解析响应标头以找出存在多少页 100 项。然后,您可以提出其他请求。在上面的示例中,有 50 页,每页 100 页。
以下答案使用 javascript 解决了问题,但 python 的代码类似:How to get number of result pages for the data from Github API fetched for a request?
推荐阅读
- javascript - C3.js 图例在隐藏/显示 div 时重叠。如何防止这种情况?
- html - 如何将 HTML 元素放在一行中?
- databricks - Databricks:以一致的方式保存到 DWH(突触)
- php - 我需要提高我在 PHP 中的 sql 查询的性能
- sql - Postgres - 优化获取 as_at_date 是 EOM 的所有行
- vue.js - 如何确定事件是否在父组件中被捕获
- javascript - 如何使用纯 JavaScript 在下拉列表中构建可折叠选项
- python - Makefile中“-I”的作用是什么?
- python - 从从另一个文件导入并加载文件的目录导入[python]
- python - 如何使用sklearn的K-Means根据兴趣对人进行分组?