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

联想驱动爬虫开发遇KeyError:'DownloadData'字段定位求助

解决联想驱动爬虫的KeyError问题

问题原因

联想的API接口结构已更新,原代码依赖的DownloadData字段不再存在,因此触发KeyError。

解决步骤

  1. 查看API返回的实际结构
    在获取updates_data后添加调试代码,打印完整返回内容,确认正确的字段名:

    import pprint
    # 先获取响应并检查状态码,确认请求是否成功
    response = requests.get(f"{lenovo_api}{urlencode(payload)}", headers=headers)
    print(f"请求状态码: {response.status_code}")
    if response.status_code == 200:
        updates_data = response.json()
        # 格式化打印返回的JSON结构,便于查看所有字段
        pprint.pprint(updates_data)
    else:
        print(f"请求失败,请检查headers或productId是否正确")
    

    运行后你会看到API返回的顶级键名(例如可能是Items、Data等),驱动列表就嵌套在这些键中。

  2. 替换正确的字段名
    根据打印出的结构,将循环中的updates_data["DownloadData"]替换为实际字段名。比如如果驱动列表在Items字段下,修改后的循环代码如下:

    rows = [
        [
            driver['NAME'],
            driver['DATE'],
            driver['VERSION'],
            driver['PRIORITY'],
            driver['TypeString'],
            driver['URL'],
            driver['SUMARY'],
        ] for driver in updates_data["Items"]
    ]
    
  3. 添加字段容错处理
    为避免后续出现类似字段缺失错误,可使用dict.get()方法做容错:

    # 先获取驱动列表,不存在则返回空列表
    driver_list = updates_data.get("Items", [])
    rows = [
        [
            driver.get('NAME', 'N/A'),
            driver.get('DATE', 'N/A'),
            driver.get('VERSION', 'N/A'),
            driver.get('PRIORITY', 'N/A'),
            driver.get('TypeString', 'N/A'),
            driver.get('URL', 'N/A'),
            driver.get('SUMARY', 'N/A'),
        ] for driver in driver_list
    ]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:02:42