【问题标题】:GitHub API - Different number of results for jq filtered responseGitHub API - jq 过滤响应的不同结果数量
【发布时间】:2019-02-13 04:12:35
【问题描述】:

我正在尝试使用 GitHub API 来制作一个有据可查的开源 Java 库列表。为此,我浏览了 GitHub API 文档并制作了这个简单的 curl。

curl -G  https://api.github.com/search/repositories?q=language:Java+stars:%3E=500+library+java+in:readme > output1.txt

它的输出是一个巨大的 txt 文件,其中包含有关找到的所有存储库的信息。在此示例中,共有 736 个匹配项。但是,上面命令中的文件非常不可读,所以我决定使用jq 进行一些解析,结果如下:

curl -G  https://api.github.com/search/repositories?q=language:Java+stars:%3E=500+library+java+in:readme \
 | jq ".items[] | {name, description, language, watchers_count, html_url}" > parsedOutput1.txt

在此之后,我得到了大约 30 个存储库,而不是 736 个结果,这对我的目的来说是不可接受的。

在 GitHub 搜索框中搜索:language:java stars:>=500 java library in:readme 给我同样的 736 个结果。我真的不知道我做错了什么,所以我可以使用帮助。

【问题讨论】:

    标签: github pagination github-api jq


    【解决方案1】:

    这是一个分页问题,​​如文档中所述,api 每次请求只为您提供 30 个项目,因此您需要添加一些代码以包含所有页面。我使用的是 bash,所以我的代码最终是这样的:

     for i in `seq 1 34`;
            do
                URL="https://api.github.com/search/repositories?q=language:Java+stars:%3E=500+library+java+in:readme&page=$i"
                echo $URL
                curl -G  $URL \
                | jq ".items[] | {name, description, language, watchers_count, html_url}" >> parsedOutput1.txt
            done
    

    另外注意,在执行大量请求时,您应该进行身份验证,否则您将收到 API rate limit exceeded 消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2021-08-02
      相关资源
      最近更新 更多