如何通过GitHub API获取全部174个符合条件的用户列表?
嘿,这个问题我熟!GitHub Search API默认是分页返回结果的,每页最多给30条(不过你可以调到最多100条),所以你只拿到了第一页的30个用户。要获取全部174个,得通过分页参数来遍历所有页面才行。下面分别说下Postman和curl的实现方法:
Postman 实现步骤
- 先确认总页数:
先发送一次原始请求https://api.github.com/search/users?q=abcde+repos:%3E1,在返回的响应体里找到total_count字段(这里是174)。
计算总页数:因为per_page最大可以设为100,所以总页数 = 向上取整(174/100) = 2页(如果总数是250的话就是3页,以此类推)。 - 设置分页参数:
在Postman的请求Params面板里添加两个参数:per_page:值设为100(这是GitHub允许的最大单页返回数,能减少你需要发送的请求次数)page:从1开始,依次设置为1、2,分别发送请求
- 收集结果:
每次请求后,提取响应体里items数组中的login字段,把所有页面的结果合并起来就是完整的174个用户名了。
如果你想自动化批量执行,可以用Postman的Collection Runner,设置page参数的迭代范围(比如1到2),自动遍历所有页面并收集结果。
curl 实现步骤
- 先获取总条数:
执行下面的命令得到总用户数:
这里会返回174,计算总页数为2页。curl -s "https://api.github.com/search/users?q=abcde+repos:%3E1" | jq '.total_count' - 循环请求所有页面:
用bash循环遍历每一页,获取所有用户名:
如果你想把结果保存到文件里,直接重定向输出即可:for page in {1..2}; do curl -s "https://api.github.com/search/users?q=abcde+repos:%3E1&per_page=100&page=$page" | jq '.items[].login' donefor page in {1..2}; do curl -s "https://api.github.com/search/users?q=abcde+repos:%3E1&per_page=100&page=$page" | jq '.items[].login' >> all_github_usernames.txt done
注意事项
- GitHub API有速率限制:未认证的请求每小时最多60次,你的这个请求量很小,完全没问题;如果是处理更大的数据集,建议添加认证信息(比如个人访问令牌)来提升速率限制。
- 当
page超过总页数时,API会返回空的items数组,所以不用担心多请求的问题。
内容的提问来源于stack exchange,提问作者Alin
相关产品推荐
相关产品推荐

