使用Python爬取Nvidia API时无法显示productPrice字段问题求助
解决Nvidia API爬取中productPrice字段不显示的问题
问题1:格式化字符串占位符数量不匹配
你的print语句里仅定义了2个占位符{},但传入了3个参数(产品标题、库存状态、价格),导致价格参数被直接忽略,这是输出看不到价格的直接原因。
修改方式:添加对应数量的占位符,或者用更直观的f-string格式化:
# 方式1:补充占位符 print("{:<50} {} {}".format(p["productTitle"], p["productAvailable"], p["productPrice"])) # 方式2:使用f-string更清晰 print(f"{p['productTitle']:<50} 库存状态: {p['productAvailable']} 价格: {p.get('productPrice', '无价格')}")
问题2:productPrice可能是嵌套结构
调用API返回的productPrice大概率是嵌套字典(包含currentPrice、currency等子字段),而非直接的数值/字符串。可以先打印单条产品数据确认结构:
print(json.dumps(p, indent=2))
如果是嵌套结构,需要提取对应子字段,同时处理字段缺失的情况避免报错:
price_info = p.get("productPrice", {}) price = price_info.get("currentPrice", "无价格") currency = price_info.get("currency", "")
修改后的完整代码
import json import requests url = 'https://api.nvidia.partners/edge/product/search?page=1&limit=9&locale=fr-fr&category=GPU&gpu=RTX%203090,RTX%203080%20Ti,RTX%203080,RTX%203070%20Ti,RTX%203070,RTX%203060%20Ti,RTX%203060&gpu_filter=RTX%203090~12,RTX%203080%20Ti~7,RTX%203080~16,RTX%203070%20Ti~3,RTX%203070~18,RTX%203060%20Ti~8,RTX%203060~2' headers = { "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:89.0) Gecko/20100101 Firefox/89.0" } data = requests.get(url, headers=headers).json() for p in data["searchedProducts"]["productDetails"]: title = p["productTitle"] available = p["productAvailable"] price_info = p.get("productPrice", {}) price = price_info.get("currentPrice", "无价格") currency = price_info.get("currency", "") print(f"{title:<50} 库存: {available} 价格: {price} {currency}")
内容的提问来源于stack exchange,提问作者user19707890
相关产品推荐
相关产品推荐

