使用Python从warframe.market JSON API提取最低售价关联的用户数据
实现代码
import requests # 建议添加请求头避免API拦截,可根据自身情况修改 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } item = input('put your item here please : ') gg = item.replace(' ', '_') response_url = requests.get(f'https://api.warframe.market/v1/items/{gg}/orders?include=item', headers=headers) # 直接用requests内置json方法解析响应,不需要额外导入json模块 data = response_url.json() orders = data["payload"]["orders"] # 筛选符合要求的订单:sell类型、卖家在线(online/ingame都属于在线状态) valid_sell_orders = [ o for o in orders if o["order_type"] == "sell" and o["user"]["status"] in ("online", "ingame") ] if not valid_sell_orders: print("当前没有在线玩家发布的出售订单") else: # 直接取价格最低的完整订单条目,而非仅价格值 lowest_order = min(valid_sell_orders, key=lambda x: x["platinum"]) # 输出需要的信息,可按需扩展字段 print(f"最低售价:{lowest_order['platinum']} platinum") print(f"卖家游戏内名称:{lowest_order['user']['ingame_name']}") print(f"卖家账号状态:{lowest_order['user']['status']}") # 如需卖家全部信息直接打印lowest_order['user']即可 # print("卖家全部基础信息:", lowest_order['user'])
改动说明
- 新增了订单过滤逻辑,仅保留出售类型+卖家在线的有效订单,符合需求
- 直接通过
min()的key参数获取最低价格对应的完整订单对象,不需要先找价格再匹配对应订单,效率更高 - 补充了空数据判断,避免没有符合条件的订单时程序抛出异常
- 优化了响应解析写法,简化代码
- 添加了请求头,避免Warframe Market的API拦截无标识的请求
内容的提问来源于stack exchange,提问作者hracke
相关产品推荐
相关产品推荐

