联想驱动爬虫开发遇KeyError:'DownloadData'字段定位求助
解决联想驱动爬虫的KeyError问题
问题原因
联想的API接口结构已更新,原代码依赖的DownloadData字段不再存在,因此触发KeyError。
解决步骤
查看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等),驱动列表就嵌套在这些键中。替换正确的字段名
根据打印出的结构,将循环中的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"] ]添加字段容错处理
为避免后续出现类似字段缺失错误,可使用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
相关产品推荐
相关产品推荐

