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

求助:使用PokeAPI加载宝可梦精灵图失败,此前正常运行

解决PokeAPI精灵图加载失败的问题

排查步骤

  • 验证URL有效性:把链接里的{id of the Pokemon}替换成具体数字(比如1),直接在浏览器打开。如果显示404,说明硬编码的GitHub路径已经失效;如果能正常打开,问题大概率出在请求头或网络环境。
  • 检查requests请求状态:运行以下代码查看返回码,快速定位问题类型:
    import requests
    
    url = "https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png"
    response = requests.get(url)
    print(response.status_code)
    
    • 403:GitHub的反爬机制拦截了请求,需要添加请求头
    • 404:路径错误,需更新图片链接
    • 200但图片无法显示:可能是网络代理/防火墙限制,或图片数据解析问题

解决方案

1. 改用PokeAPI接口动态获取图片链接(推荐)

硬编码GitHub路径容易因为资源迁移失效,直接调用PokeAPI获取官方维护的图片链接更可靠:

import requests

def fetch_pokemon_sprite(pokemon_id):
    api_endpoint = f"https://pokeapi.co/api/v2/pokemon/{pokemon_id}/"
    resp = requests.get(api_endpoint)
    if resp.ok:
        pokemon_data = resp.json()
        # 取默认正面精灵图,也可以选其他规格比如official-artwork
        return pokemon_data["sprites"]["front_default"]
    return None

# 示例:获取ID为1的妙蛙种子图片链接
sprite_url = fetch_pokemon_sprite(1)

拿到链接后直接传给AsyncImage即可。

2. 添加请求头绕过反爬

如果坚持用原GitHub路径,给请求添加User-Agent头,避免被GitHub拦截:

  • 用requests加载时:
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}
    response = requests.get(url, headers=headers)
    
  • 在kivyMD的AsyncImage中设置:
    from kivymd.uix.image import AsyncImage
    
    sprite_img = AsyncImage(
        source="https://raw.githubusercontent.com/PokeAPI/sprites/master/sprites/pokemon/1.png",
        headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}
    )
    

3. 检查网络环境

确认本地没有代理、防火墙或VPN阻止访问GitHub的raw资源,尝试切换网络(比如从公司网换为手机热点)测试。

内容的提问来源于stack exchange,提问作者Omanshu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:12:33