如何用Python requests模块获取特定分类随机单词?API调用出错求助
问题解决:获取分类随机单词的API调用错误修复
问题分析
你的代码触发异常,核心原因是当前请求的API端点参数规则不符合该Heroku随机单词API的要求:原/word端点不支持category参数,且你使用的复数分类名(fruits)也不符合API的参数规范,导致返回错误信息而非预期的单词列表,最终引发解析或选择逻辑的异常。
解决方案
步骤1:先定位具体错误(可选但推荐)
修改异常处理逻辑,捕获并打印具体错误信息和响应内容,便于快速排查问题:
import requests import random try: url = "https://random-word-api.herokuapp.com/word?number=1&category=fruits" response = requests.get(url) # 主动检查请求状态码,失败时抛出异常 response.raise_for_status() words = response.json() random_word = random.choice(words) print(random_word) except Exception as e: print(f"错误详情: {e}") print(f"API响应内容: {response.text}")
运行后会看到类似错误详情: Invalid category的提示,明确问题出在分类参数或端点选择上。
步骤2:修正API请求逻辑
该Heroku API获取分类单词的正确方式是使用/all端点,且分类名需使用单数形式(如fruit而非fruits)。修改后的代码如下:
import requests import random try: # 使用/all端点获取对应分类的完整单词列表,分类名用单数 url = "https://random-word-api.herokuapp.com/all?category=fruit" response = requests.get(url) response.raise_for_status() words = response.json() # 从分类单词列表中随机选取一个 random_word = random.choice(words) print(random_word.capitalize()) except Exception as e: print(f"获取API数据失败: {e}")
此代码会正确返回随机水果名称(如Apple、Orange)。
补充说明
- 该API支持的有效分类(单数形式)包括:
fruit、color、animal、adjective、verb等。 - 使用
response.raise_for_status()可以在API返回错误状态码(如404、500)时主动抛出异常,避免后续逻辑处理无效数据。
内容的提问来源于stack exchange,提问作者DEEPINDER SINGH
相关产品推荐
相关产品推荐

