如何从Roblox市场商品接口返回的JSON数据中提取销量数值
实现方法
你可以直接使用Python内置的json模块解析接口返回的JSON数据,无需依赖第三方库,既可以直接解析接口拿到的字符串,也可以解析你保存到本地的响应文件,具体实现如下:
方案1:直接解析接口返回的字符串(省去读写文件步骤)
你当前代码中已经通过driver.find_element拿到了完整的JSON字符串,直接解析即可:
- 首先在代码头部引入
json模块
import json
- 修改
submitData函数逻辑:
def submitData(self): self.title.setText("Roblox Sales Checker") try: ID = self.ID_INPUT.text() url = f'https://api.roblox.com/Marketplace/ProductInfo?assetId={ID}' driver.get(url) driver.add_cookie("My Auth Cookie,but not for you :)") driver.refresh() # 获取JSON格式的响应字符串 json_str = driver.find_element_by_css_selector("body > pre").text # 转为Python字典 res_data = json.loads(json_str) # 直接提取销量字段 sales_num = res_data["Sales"] print(f"商品销量:{sales_num}") # 可选:保留原来存文件的逻辑,用with更安全无需手动关文件 with open('apiResponse.txt', 'w', encoding='utf-8') as f: f.write(json_str) except Exception as e: print(f"处理出错:{str(e)}")
方案2:从已保存的本地响应文件中提取
如果你需要单独从已经生成的apiResponse.txt里读取销量,代码如下:
import json with open('apiResponse.txt', 'r', encoding='utf-8') as f: res_data = json.load(f) sales_num = res_data["Sales"] print(sales_num)
注意事项
- 解析后的
res_data是标准Python字典,你可以按照同样的方法提取返回值里的其他字段,比如商品名称、更新时间等 - 建议增加字段存在性判断,避免接口结构变化导致报错:
sales_num = res_data.get("Sales", 0) # 如果字段不存在默认返回0 - 使用
with语句操作文件会自动完成关闭逻辑,比手动调用open/close更安全,不会出现文件句柄泄漏问题
内容的提问来源于stack exchange,提问作者Fabian Hasieber
相关产品推荐
相关产品推荐

