首页 > 解决方案 > 在 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 个)。

标签: pythonapigithubpython-requestsgithub-api

解决方案


出于某种原因,这些类型的请求受到 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?


推荐阅读