2

我想获取 github 用户及其位置。我知道有 Github apI(GET /users) 可以为我提供用户列表。目前我正在使用PyGithub访问 github,但似乎这个库还没有实现这个 API。谁能建议我如何使用任何 github API 库获取 github 用户及其位置?

EDIT1:我更新了如下代码。但是有些我无法获得电子邮件 ID 和位置。

import github3
from datetime import datetime

def main():
        g = github3.login(username="rakeshcusat", password="mypassword")
    for user in g.iter_emails():
        print user
    current_time = datetime.now()   
    fhandler = open("githubuser_"+current_time.strftime("%d-%m-%y-%H:%M:%S"), "w")

    for user in g.iter_all_users():
            fhandler.write(" user: {0}, email: {1}, location: {2}\n".format(user, user.email, user.location))
            #fhandler.flush()

    fhandler.close()        

if __name__ == "__main__":
    main()

样本输出

 user: andywatts, email: None, location: 
 user: mueller, email: None, location: 
 user: cp, email: None, location: 
 user: davea, email: None, location: 
 user: vrieskist, email: None, location: 
4

1 回答 1

2

github3支持所有用户的迭代:

import github3

for user in github3.iter_all_users():
    user.refresh()
    print user.location

github3.iter_all_users()产生User对象

您需要在.refresh()此处调用,因为/users端点仅返回较小的用户信息子集,并且其中不包含位置。这需要另一个 API 请求,因此您可能需要调整脚本的速度以避免达到 GitHub 速率限制。

未来版本github3(比 0.7.0 更新)增加了对指定页面(批量)大小的支持,以减少您需要发出的 API 请求数量;GitHub API 默认为每页 30 个结果,但允许您每页最多加载 100 个结果

for user in github3.iter_all_users(per_page=100):
    user.refresh()
    print user.location
于 2013-06-15T23:09:12.633 回答