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

遍历含缺失键的列表嵌套字典提取字段及API代码优化

动漫title字段提取实现

遍历接口返回的结果列表时,优先判断条目是否存在data键:存在则为有效动漫数据,不存在则为404类错误响应直接跳过。取值时用字典的.get()方法,即可自动处理字段缺失的场景,不会触发KeyError中断脚本。
核心提取代码如下:

anime_titles = []
for resp_item in data:
    # 过滤无有效动漫数据的错误响应
    anime_detail = resp_item.get("data")
    if not anime_detail:
        continue
    # 提取title字段,字段缺失时默认返回None
    title = anime_detail.get("title")
    anime_titles.append(title)

运行完成后,anime_titles列表会存储所有有效条目的动漫标题,404等错误条目会被自动过滤。

原代码优化建议

原代码可以从简洁性、稳定性、可维护性三个维度优化,具体优化点:

  • 移除冗余操作:无需手动导入json模块做解析,requests响应对象自带.json()方法,可直接将返回内容转为Python字典,省去json.loads(response.text)的重复步骤
  • 调整处理流程:不需要先存储全量response对象再二次遍历解析,建议边请求、边解析、边提取目标字段,大幅降低内存占用,批量抓取上千个ID时优化效果尤其明显
  • 补充异常兼容:除了处理404业务错误,还要捕获网络超时、连接失败、接口限流(429状态码)等异常,避免单个请求失败导致整个脚本终止;Jikan接口有明确的请求频率限制,在固定1秒请求间隔的基础上,可以给限流场景增加自动重试逻辑
  • 清理无效输出:原代码每次请求后打印全量响应列表,ID范围稍大就会刷满控制台,无实际调试价值,建议仅输出当前处理ID、请求状态、抓取结果等关键信息
  • 统一空值处理:所有字段取值统一使用.get()方法,为缺失键设置默认返回值,从根源避免KeyError导致的脚本中断

优化后的完整可运行代码:

import requests
import time

# 最终存储提取到的动漫标题
anime_titles = []
# 遍历指定范围的动漫ID
for mal_id in range(5000, 5010):
    req_url = f'https://api.jikan.moe/v4/anime/{mal_id}/full'
    try:
        resp = requests.get(req_url, timeout=10)
        # 触发限流时等待3秒后重试一次
        if resp.status_code == 429:
            time.sleep(3)
            resp = requests.get(req_url, timeout=10)
        
        resp_data = resp.json()
        anime_info = resp_data.get("data")
        if anime_info:
            title = anime_info.get("title")
            anime_titles.append(title)
            print(f"ID {mal_id} 抓取成功,标题:{title}")
        else:
            print(f"ID {mal_id} 对应资源不存在,已跳过")
    except Exception as e:
        print(f"ID {mal_id} 请求失败,错误:{str(e)}")
    # 遵守接口频率限制,请求间隔1秒
    time.sleep(1)

print("全部抓取完成,有效动漫标题列表:", anime_titles)

优化后的代码无需存储全量响应和原始返回数据,运行过程中仅保留最终需要的标题结果,内存占用更低;单个请求失败不会影响整体任务运行,后续如果需要新增提取字段(如评分、播出时间、标签等),只需要在anime_info下追加对应的取值逻辑即可,维护成本极低。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:39:33