使用Python3调用The Cat API按品种查询猫图片的错误排查及指定像素搜索方法
问题分析与解决方案
一、为什么无法返回指定品种的图片?
你的函数主要存在两个关键问题:
- 参数名称错误:The Cat API 的图片搜索接口中,用于指定品种的参数是
breed_ids,而非你写的breeds。 - 参数值格式错误:
breed_ids需要传入的是品种的ID字符串(比如缅因猫的ID是mco,英短是bsh),而不是包含名称的字典列表。API无法通过品种名称直接匹配,必须使用它分配的唯一ID。
修正后的函数
我们可以先通过API的品种列表接口,根据传入的breed_name获取对应的品种ID,再用这个ID去搜索图片:
def get_cat_by_breed(breed_name): from requests import get from json import loads # 第一步:根据品种名称获取对应的品种ID breed_url = "https://api.thecatapi.com/v1/breeds/search" breed_params = {"q": breed_name} breed_response = get(url=breed_url, params=breed_params) breed_data = loads(breed_response.content) if not breed_data: return f"未找到名为{breed_name}的品种" breed_id = breed_data[0]["id"] # 第二步:用品种ID搜索图片 cat_url = "https://api.thecatapi.com/v1/images/search" params = { "breed_ids": breed_id, "api_key": api_key, "limit": 100, "page": 1 } response = get(url=cat_url, params=params) return loads(response.content)
如果已经明确知道目标品种的ID,也可以直接让函数接收breed_id作为参数,这样能减少一次API请求,提升效率。
二、如何搜索像素≥x且≥y的图片?
The Cat API 提供了width_min和height_min两个参数,直接添加到请求的params字典中即可。比如要搜索宽度≥1920、高度≥1080的图片,修改后的参数如下:
params = { "breed_ids": breed_id, "api_key": api_key, "limit": 100, "page": 1, "width_min": 1920, "height_min": 1080 }
这样就能筛选出符合像素要求的指定品种猫图了。
内容的提问来源于stack exchange,提问作者James Geddes
相关产品推荐
相关产品推荐

