如何通过Python根据邮箱或姓名获取GitHub用户ID?
根据姓名/邮箱获取GitHub用户ID的解决方案
一、直接调用GitHub API(推荐,避免PyGitHub的潜在问题)
GitHub的Search API支持通过姓名或邮箱搜索用户,以下是Python实现代码,需要先准备GitHub个人访问令牌(PAT)(授权后可提升速率限制):
1. 根据姓名搜索用户ID
import requests def get_github_ids_by_name(target_name, github_token): search_url = "https://api.github.com/search/users" # 构造搜索查询:匹配目标姓名 params = {"q": f"name:{target_name}"} headers = {"Authorization": f"token {github_token}"} response = requests.get(search_url, params=params, headers=headers) if response.status_code != 200: return [] # 提取搜索结果中的用户ID(login字段即为GitHub用户ID) user_items = response.json().get("items", []) return [user["login"] for user in user_items]
2. 根据邮箱搜索用户ID
注意:仅能搜索用户设置为公开的邮箱,私有邮箱无法通过此API查询:
import requests def get_github_ids_by_email(target_email, github_token): search_url = "https://api.github.com/search/users" params = {"q": f"email:{target_email}"} headers = {"Authorization": f"token {github_token}"} response = requests.get(search_url, params=params, headers=headers) if response.status_code != 200: return [] user_items = response.json().get("items", []) return [user["login"] for user in user_items]
二、优化PyGitHub的使用方法
如果你坚持用PyGitHub,可能之前的问题出在未授权搜索或查询语法错误,以下是修正后的代码:
from github import Github def get_github_ids_with_pygithub(target, github_token, is_email=False): # 初始化授权客户端 g = Github(github_token) # 构造正确的搜索查询语句 search_query = f"email:{target}" if is_email else f"name:{target}" # 执行搜索并提取用户ID user_list = g.search_users(search_query) return [user.login for user in user_list]
关键注意事项
- 速率限制:未授权请求每小时仅允许10次搜索,使用PAT授权后提升至30次/小时,高频调用需注意控制请求频率。
- 邮箱搜索局限性:GitHub默认隐藏用户邮箱,仅公开邮箱可被搜索到;若要关联提交记录中的私有邮箱,需结合Commit API进行更复杂的查询。
- 姓名去重:姓名可能重复,搜索结果可能返回多个用户ID,需结合其他信息(如公司、位置)进一步筛选。
内容的提问来源于stack exchange,提问作者john1994
相关产品推荐
相关产品推荐

