NewsAPI.org多关键词请求问题及解决方案:改用everything接口
解决NewsAPI多关键词头条搜索的问题
嘿,我之前也踩过top_headlines接口的这个坑——它确实不支持多关键词的组合搜索,官方文档里明确说了这个接口的q参数只能填单个关键词或者短语。如果要实现多关键词匹配,得换成everything接口,这个接口支持完整的逻辑关键词组合,而且还能通过时间范围来缩小返回结果量,避免数据太多。
下面是我测试过的可行代码(用Python的requests库),你可以直接参考:
import requests def get_news_with_multiple_keywords(): api_key = "你的API密钥" # 替换成你自己的NewsAPI密钥 base_url = "https://newsapi.org/v2/everything" # 多关键词组合,支持AND/OR逻辑,比如要同时包含"AI"和"climate change"就用AND,二选一用OR keywords = "AI AND climate change" # 限制返回最近7天的新闻,from和to参数格式是YYYY-MM-DD params = { "q": keywords, "from": "2024-05-20", "to": "2024-05-27", "sortBy": "publishedAt", # 按发布时间排序 "pageSize": 20, # 控制每次返回的文章数量 "apiKey": api_key } response = requests.get(base_url, params=params) if response.status_code == 200: news_data = response.json() # 处理返回的新闻数据,比如打印标题 for article in news_data["articles"]: print(f"标题: {article['title']}") print(f"来源: {article['source']['name']}") print("---") else: print(f"请求失败,状态码: {response.status_code}") print(response.json()) get_news_with_multiple_keywords()
几个关键点要注意:
q参数里的关键词可以用逻辑运算符:AND、OR、NOT,还能用引号包裹短语,比如"renewable energy" AND solarfrom和to参数用来限定新闻的发布时间,能有效减少返回的结果数量,避免接口返回太多数据- 如果需要分页,可以加
page参数,配合pageSize来分批获取内容
另外,记得把代码里的api_key替换成你自己在NewsAPI上申请的密钥,不然会请求失败哦。
内容的提问来源于stack exchange,提问作者Bradley
相关产品推荐
相关产品推荐

