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

使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.01 00:37:52