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

Github Search API查询PR按创建日期筛选无返回,同逻辑查询Issue正常

问题排查与解决方案

核心结论

这不是GitHub对非企业用户的限制,普通用户完全支持按内容、日期范围搜索Pull Request。GitHub的Issues搜索接口本身就同时覆盖Issue和PR两类数据,添加is:pr筛选是官方推荐的标准用法,没有用户类型的限制。

无返回结果的常见原因

  • 查询参数拼接错误:你在q参数里手动用+拼接多个筛选条件,但是requests库的params参数会自动对特殊字符做URL编码,手动添加的+会被编码为%2B,最终变成搜索关键词的一部分,而不是筛选条件的分隔符,导致查询逻辑完全不符合预期,自然返回空结果。
  • 请求协议问题:你使用的是HTTP协议调用接口,GitHub API已强制要求HTTPS访问,HTTP请求会触发301跳转,部分请求库不会自动处理跳转逻辑,导致无法拿到正确返回结果。
  • 未检查API返回的错误信息:你当前直接解析返回内容,没有判断接口返回的状态码,也没有检查返回结果里的message、errors字段,如果查询语法错误、token权限不足、触发限流,API都会返回对应的提示信息,不会直接抛出请求错误。
  • 触发API限流:GitHub搜索接口对认证用户的限流是每小时30次,未认证用户是每小时10次,触发限流时会返回403状态码,可在返回内容里看到明确的限流提示。
  • 搜索条件本身无匹配结果:你可以先在GitHub网页端的搜索框输入相同的筛选条件(比如你的关键词 is:pr created:>2023-01-01),确认是否真的存在匹配的PR,排除本身无结果的情况。

修正方案

1. 调整后的可运行代码

def search_prs(search_str, date_str, page_num):
    req = requests.get('https://api.github.com/search/issues',
                    params={
                        'q': f'{search_str} is:pr created:>{date_str}',
                        'per_page': 100,
                        'page': page_num,
                        'sort': 'created',
                        'order': 'asc'
                    },
                    headers={
                        'Authorization': 'token ' + ACCESS_TOKEN,
                        'Accept': 'application/vnd.github.cloak-preview'
                    }, 
                    timeout=10)
    # 新增错误校验,方便快速定位问题
    if req.status_code != 200:
        print(f"请求错误,状态码:{req.status_code},返回内容:{req.text}")
    return req.json()

2. 排查步骤

调用接口后先打印返回结果的total_count字段:

  • 如果值为0,说明没有匹配当前搜索条件的PR,调整搜索关键词或日期范围即可
  • 如果值大于0但你拿不到数据,检查后续的结果解析逻辑即可
  • 如果返回结果包含errors字段,按照提示修正查询语法即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:06:04