GitHub 搜索限制结果

28
我需要在Github上进行大量搜索,以找到我论文所需的统计信息。例如,我需要在GitHub上探索大量Android项目,但该网站将搜索结果限制为1000个(例如:https://github.com/search?l=java&q=onCreate&ref=searchresults&type=Code&utf8=%E2%9C%93)。此外,我尝试使用Java GitHub API中的库org.eclipse.egit.github.core.client.GitHubClient,并使用方法GitHubClient.searchRepositories(),但即使在那里,结果的数量也是受限制的。
有没有人知道如何获取所有的结果?

2
你看过 GitHub Archive 吗?这可能是一种获取数据的方式,而无需打扰现有的 GitHub 搜索 API,你已经发现它给出了有限数量的结果,并且还受到速率限制。 - Wander Nauta
这不是一个Java问题,甚至也不是一个编程问题。 - shmosel
你只能在每次搜索中限制1000个结果,每分钟最多30个请求:https://developer.github.com/v3/search/#about-the-search-api - zapl
你的代码是否公开可用? - Soubriquet
1
@Peipei,很遗憾,1000的限制仍然存在。这里是链接,说明了这一点-https://docs.github.com/en/rest/search?apiVersion=2022-11-28 - desert_ranger
显示剩余2条评论
2个回答

41

搜索API每次查询最多返回1000个结果(包括分页),详见这里:

https://developer.github.com/v3/search/#about-the-search-api

然而,在执行仓库搜索时,有一个巧妙的技巧可以用来获取超过1000个结果。你可以将搜索分成若干段,按创建仓库的日期进行分段。例如,你可以先搜索2013年10月的第一周创建的仓库,然后是第二周,接着是九月,以此类推。

因为你将搜索限制在一个狭窄的时间段内,所以你可能会得到少于1000个结果,因此能够获取所有结果。如果你发现返回了超过1000个结果,就需要缩小时间段,以便收集所有结果。

https://help.github.com/articles/searching-repositories/#search-based-on-when-a-repository-was-created-or-last-updated

你应该能够通过API自动化执行此操作。


2
@Soubriquet,你没有正确构建那个URL。"created"参数应该是查询的一部分,而不是它自己的参数。 - Ivan Zuzak
1
此外,您不能按创建日期排序 - 您可以按以下列出的字段进行排序:https://developer.github.com/v3/search/#parameters - Ivan Zuzak
8
太棒了!谢谢!如果其他人也需要,这是链接: https://api.github.com/search/repositories?q=language:Java+created:>=2013-04-11T00:00:00Z&order=asc - Soubriquet
2
order=asc 应用于 sort 字段,该字段可以是 stars、forks、updated 或 best_match(默认)。因此,curl -G https://api.github.com/search/repositories --data-urlencode "q=created:>2013-04-11" --data-urlencode "order=asc" 可以获取所有在 2013-04-11 之后创建的存储库,但不按创建顺序排序。我们可以使用 q=created:time1..time2 获取范围内的存储库,但结果不按创建时间排序。 - Alex
OP 正在尝试搜索代码,而不是存储库。当搜索代码时,您无法按任何日期进行排序。 - Bernard
显示剩余2条评论

8

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接