使用Python Requests爬取SMWS API时遇KeyError: 'data'问题求助
解决SMWS API爬取时的KeyError问题
问题分析
出现KeyError: 'data'是因为API返回的JSON结构里没有data字段,核心原因是你的请求未携带必要请求头(比如User-Agent),被服务器识别为非浏览器请求,返回了错误或验证类内容,而非预期的威士忌数据。
修复后的代码
import requests # 添加模拟浏览器的请求头,绕过服务器的基础反爬验证 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } url = "https://api.smws.com/api/v1/bottles?store_id=uk&parent_id=61&page=1&sortBy=pricedesc&minPrice=0&maxPrice=0&perPage=128" response = requests.get(url, headers=headers) # 先验证请求是否成功 if response.status_code == 200: json_data = response.json() # 实际API返回的条目数据在data->items路径下 if "data" in json_data and "items" in json_data["data"]: for item in json_data["data"]["items"]: print(item["name"]) else: print("响应结构不符预期,当前响应内容:", json_data) else: print(f"请求失败,状态码:{response.status_code}")
关键注意点
- 必须携带
User-Agent请求头,否则服务器会拒绝返回有效业务数据 - 目标条目实际嵌套在
data字段下的items列表中,需调整索引路径才能获取到name字段
内容的提问来源于stack exchange,提问作者Ianucci
相关产品推荐
相关产品推荐

