首页 > 解决方案 > Github API 中的 Python Get 请求失败

问题描述

我正在尝试获取在 Github中top 2000 Java repos排序的URLmost stars

代码:

import requests
import json

urls = []

#increased per_page in the request results to 100, so 20 iterations * 100 = 2000 repos
for i in range(20):

   #waiting for 75 secs every 10 requests to respect the github limit
   if i%10==0 and i >0:
      time.sleep(75)
   r = requests.get('https://api.github.com/search/repositories?q=language:java&sort=stars&order=desc&per_page=100&page='+str(i))
   print (r.ok)
   if r.ok == True:
       items = r.json()["items"]
       for each in items:
            urls.append(each["html_url"])

请求在 10, ( ) 次迭代后失败,r.ok==False因此它不会跨1000repos。任何关于错误的建议都会很棒。

标签: pythonapigithubgithub-apigithub-actions

解决方案


我认为您超出了请求限制。根据文档,

速率限制中,

Search API 有一个自定义速率限制。对于使用基本身份验证、OAuth 或客户端 ID 和密码的请求,您每分钟最多可以发出 30 个请求。对于未经身份验证的请求,速率限制允许您每分钟最多发出 10 个请求。

存储库搜索 API 限制中,

通过各种标准查找存储库。此方法每页最多返回 100 个结果。

因此,您每分钟可获得 1000 个结果并超出限制。


推荐阅读