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

新闻搜索工具突然返回空结果且更换API后密钥报错的问题求助

新闻搜索工具突然返回空结果且更换API后密钥报错的问题求助

看起来你遇上了挺闹心的状况——之前好好的工具突然罢工,换API还碰上新麻烦,咱一步步来捋清楚问题出在哪:

先解决「突然返回空结果」的核心问题

你说代码没改就突然没输出,大概率和NewsAPI的调用逻辑或数据返回有关,给你几个排查方向:

  1. 检查API返回的完整响应
    你现在只提取了articles字段,但完全不知道API调用本身有没有报错、到底有没有匹配到文章。可以在调用get_everything之后加一行打印:

    print("API完整返回内容:", responce)
    

    重点看status字段(是不是ok)、totalResults字段(是不是0):

    • 如果totalResults是0:说明当天确实没有匹配你搜索词的文章,或者你的搜索词太窄、排序规则导致没内容。可以试试把from_param的日期往前调1-2天,比如:
      from datetime import timedelta
      # 替换原from_param行
      from_param=(date.today() - timedelta(days=1)).isoformat()
      
    • 如果status是error:那就是API调用出问题了,可能是免费密钥的调用次数超限(哪怕你没改代码,密钥如果不小心泄露,可能被别人用超了),或者密钥失效,这时候可以去NewsAPI的后台看看密钥状态。
  2. 搜索词与排序规则的组合问题
    比如你搜了一个非常小众的词,又选了relevancy排序,当天刚好没有相关内容;或者选了publishedAt但当天的文章还没被NewsAPI收录。可以试试用宽泛的搜索词(比如"tech")+publishedAt排序测试,看能不能返回结果。

再说说「更换API后密钥报错」的问题

不同API的密钥传递规则完全不一样,不能直接套NewsAPI的用法:

  • 有的API要求把密钥放在Authorization请求头里(格式比如Bearer 你的密钥);
  • 有的是作为URL参数传递;
  • 还有的可能需要在请求体里指定。
    你换API的时候一定要仔细看对应API的官方文档,确认密钥的格式、传递位置,别直接把NewsAPI的api_key参数用法照搬过去,另外复制密钥的时候要注意有没有多带空格、少复制字符的情况。

顺便给你提几个代码里的潜在小坑

这些虽然不是当前问题的直接原因,但长期用肯定会出问题:

  • 文章索引错误:你用enumerate(articles, start=1)给文章编了1开始的号,但textList是0开始的索引,用户输入1的时候你取textList[ques4int]会拿到第二篇文章的内容,应该改成textList[ques4int-1];
  • 递归调用栈溢出:你在各种分支里都递归调用newsSearcher(),多次操作后会导致调用栈越来越深,最后直接崩溃,建议改成用while True循环控制流程;
  • 异常处理太笼统:你用except:捕获所有异常,根本不知道下载文章失败是网络问题还是解析问题,改成捕获具体异常并打印错误信息:
    except Exception as e:
        print(f"下载文章失败:{str(e)}")
    
  • Gemini调用的语法错误:if ques8=='yes' or'y':这里逻辑有问题,'y'本身是布尔值True,不管用户输入什么都会进入递归,应该写成if ques8=='yes' or ques8=='y':

备注:内容来源于stack exchange,提问作者Phineas Haskell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 13:03:13