如何从几个github页面获取用户存储库

问题描述 投票:0回答:1

这是我的代码。

  1. 我可以以某种方式提供一个URL,以便程序检查所有站点的存储库?关键是我希望立即下载page = 1,page = 2,page = 3的数据。也许所有页面都有一般表格?
  2. 第1页和第2页有30个存储库,第1页和第2页的程序只下载29.从第3页开始,有时5个存储库,但有6个存储库。为什么?

公共类Main {

public static void main(String[] args) throws Exception {

    String url = "https://api.github.com/users/allegro/repos?pagelen=30&page=1";
    String data = readUrl(url);
    JSONArray jsonArr = new JSONArray(data);

    for (int i = 0; i < jsonArr.length(); i++) {
        JSONObject jsonObj = jsonArr.getJSONObject(i);

        System.out.println(jsonObj.get("name") + " : " + jsonObj.get("updated_at"));
    }
}
private static String readUrl(String urlString) throws Exception {
    BufferedReader reader = null;
    try {
        URL url = new URL(urlString);
        reader = new BufferedReader(new InputStreamReader(url.openStream()));
        StringBuffer buffer = new StringBuffer();
        int read;
        char[] chars = new char[1024];
        while ((read = reader.read(chars)) != -1)
            buffer.append(chars, 0, read);

        return buffer.toString();
    } finally {
        if (reader != null)
            reader.close();
    }
}

}

编辑使用此行应用程序我返回66个回购65。

    String url1 = "https://api.github.com/users/allegro/repos?pagelen=1000";
    String url2 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=2";
    String url3 = "https://api.github.com/users/allegro/repos?pagelen=1000&page=3";

    String data1 = readUrl(url1);
    String data2 = readUrl(url2);
    String data3 = readUrl(url3);

    JSONArray jsonArr1 = new JSONArray(data1);
    JSONArray jsonArr2 = new JSONArray(data2);
    JSONArray jsonArr3 = new JSONArray(data3);


    for (int i = 0; i < jsonArr1.length(); i++) {
        JSONObject jsonObj = jsonArr1.getJSONObject(i);

        System.out.println(jsonObj.get("name") + " : " + jsonObj.get("updated_at"));
    }
    for (int i = 0; i < jsonArr2.length(); i++) {
        JSONObject jsonObj = jsonArr2.getJSONObject(i);

        System.out.println(jsonObj.get("name") + " : " + jsonObj.get("updated_at"));
    }
    for (int i = 0; i < jsonArr3.length(); i++) {
        JSONObject jsonObj = jsonArr3.getJSONObject(i);

        System.out.println(jsonObj.get("name") + " : " + jsonObj.get("updated_at"));
    }
java json github-api
1个回答
0
投票

返回多个项目的Github搜索请求默认分页为30个项目。在大多数情况下,您可以使用?per_page参数将每页的项目数增加到最多100个。所以你的搜索请求网址应该是https://api.github.com/users/allegro/repos?per_page=100&page=page_no。见Github pagination

© www.soinside.com 2019 - 2024. All rights reserved.