【问题标题】:github search limit resultsgithub搜索限制结果
【发布时间】:2016-10-02 20:12:42
【问题描述】:

我需要在 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(),但即使有结果的数量也是有限的。

有人知道如何获得所有结果吗?

【问题讨论】:

  • 你看过GitHub Archive吗?这可能是一种无需打扰实时 GitHub 搜索 API 即可获取数据的方法,正如您发现的那样,它提供的结果数量有限,而且速度也有限制。
  • 你能翻阅结果吗?你可以得到 1000 的第一个块,得到下一个块,然后重复直到你得到所有。
  • 这不是Java问题,甚至不是编程问题。
  • 正确,每次搜索限制为 1000 个结果和每分钟 30 个请求:developer.github.com/v3/search/#about-the-search-api
  • 你的代码公开吗?

标签: github github-api


【解决方案1】:

搜索 API 将返回最多 1000 个结果每个查询(包括分页),如下所述:

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

但是,在执行存储库搜索时,您可以使用一个巧妙的技巧来获取超过 1000 个结果。您可以按存储库的创建日期将搜索分成多个段。例如,您可以先搜索在 2013 年 10 月的第一周创建的仓库,然后是第二周,然后是 9 月,依此类推。

由于您将搜索限制在一个狭窄的时间段内,您可能会获得少于 1000 个结果,因此能够获得所有结果。如果您发现某个时间段返回的结果超过 1000 个,则必须进一步缩小该时间段,以便收集所有结果。

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

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

【讨论】:

  • 似乎您无法按创建日期查询存储库搜索 api。以下将搜索,但忽略排序、排序和创建:curl -H 'Accept: application/vnd.github.v3.text-match+json' 'https://api.github.com/search/repositories?q=language:Java&created>=2013-04-11T00:00:00Z&sort=created&order=asc' | grep created_at
  • @Soubriquet 您没有正确构建该 URL。 “created”参数应该是查询的一部分,而不是单独的参数。
  • 另外,您不能按创建排序 - 此处列出了您可以排序的字段:developer.github.com/v3/search/#parameters
  • 太棒了!谢谢!如果其他人需要这个:https://api.github.com/search/repositories?q=language:Java+created:>=2013-04-11T00:00:00Z&order=asc
  • order=asc 应用于sort 字段,可以是星号、分叉、更新或最佳匹配(默认)。所以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获取某个范围内的仓库,但是结果不是按创建时间排序的。
【解决方案2】:

如果您在 Github 中使用 filename:your-file-name 搜索所有文件,您也可以使用 a query attribute : size 对其进行切片。

例如,你在 Github 中查找所有名为 test.rb 的文件,Github API 可能返回超过 11M 的结果,但你只能得到其中的 1000 个,因为the GitHub Search API provides up to 1,000 results for each search。像:https://api.github.com/search/code?q=filename:test.rb+size:1000..1500 这样的网址可以通过更改大小范围来分割您的搜索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2017-05-08
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多