You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程提取包含指定代码字符串的GitHub仓库?

解决方案:提取包含特定代码字符串的GitHub仓库

一、编程实现方法(基于GitHub Search Code API)

你找到的Search Code API调用思路是正确的,+in:file参数确实能检索包含目标代码的文件,但默认只返回第一页结果。要获取所有符合条件的仓库(受限于API上限),需要处理分页,并对结果中的仓库去重(因为一个仓库可能有多个文件匹配)。

改进后的Python代码示例:

import requests

def get_repos_with_code(search_query, token):
    repos = set()
    headers = {'Authorization': f'Token {token}'}
    page = 1
    per_page = 100  # 每页最大返回数量

    while True:
        url = f"https://api.github.com/search/code?q={search_query}+in:file&per_page={per_page}&page={page}"
        response = requests.get(url, headers=headers)
        response.raise_for_status()  # 主动抛出请求错误
        data = response.json()

        # 提取仓库全名并去重
        for item in data.get('items', []):
            repo_full_name = item['repository']['full_name']
            repos.add(repo_full_name)

        # 判断是否还有下一页结果
        if page >= data.get('total_count', 0) // per_page + 1 or len(data.get('items', [])) == 0:
            break
        page += 1

    return list(repos)

# 使用示例
search_term = "pymc3"
github_token = "your_token_here"
result_repos = get_repos_with_code(search_term, github_token)
print(f"找到{len(result_repos)}个包含目标代码的仓库:")
for repo in result_repos:
    print(repo)

二、关于API结果限制的说明

你提到的每页最多100条、总计最多1000条结果的限制是真实存在的,GitHub在Search API文档的「Pagination」和「Rate Limiting」章节有明确说明:

  • 分页参数per_page最大可设置为100;
  • 搜索接口的结果总数上限为1000,即使实际匹配的仓库更多,也无法通过API获取超出这个数量的结果。

这个限制是GitHub为平衡API服务负载和资源消耗设置的限流策略,并非文档遗漏。

内容的提问来源于stack exchange,提问作者desert_ranger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 15:45:53