已获取JSON字符串,如何提取指定层级数据?用BS还是JSON库?
解决方案:提取JSON中的third_layer内容
不能用BeautifulSoup实现这个需求,必须用Python的JSON库来处理。原因很简单:
- BeautifulSoup的核心能力是解析HTML/XML结构,你已经用它拿到了script标签里的JSON文本,这一步BS的任务就完成了。
- 接下来要处理的是JSON这种键值对数据结构,这是JSON库的职责,BS完全不擅长这个。
具体操作步骤和代码示例:
解析JSON字符串为Python字典
用json.loads()把你拿到的found_json字符串转换成Python可操作的字典对象。层级访问提取third_layer内容
根据给定的JSON结构,通过字典的键逐层访问到third_layer。保存提取的内容
用json.dump()把提取到的内容写入JSON文件,方便后续使用。
完整代码示例:
import json # 假设你已经通过BeautifulSoup获取到了found_json字符串 found_json = '''{"first_layer":{"second_layer":{"third_layer":{"id":"KYOU","liveData":{"status":"online"}}}}}''' # 解析JSON字符串 parsed_data = json.loads(found_json) # 提取third_layer下的所有内容 third_layer_content = parsed_data["first_layer"]["second_layer"]["third_layer"] # 保存到本地JSON文件 with open("third_layer_result.json", "w", encoding="utf-8") as file: json.dump(third_layer_content, file, ensure_ascii=False, indent=4) print("third_layer内容已成功保存")
额外提示:
- 如果担心键不存在导致报错,可以用
get()方法做容错处理,比如:third_layer_content = parsed_data.get("first_layer", {}).get("second_layer", {}).get("third_layer", {}) - 如果
found_json有语法问题(比如多余的转义字符),json.loads()会抛出异常,需要先检查并清洗字符串。
内容的提问来源于stack exchange,提问作者maertsoi
相关产品推荐
相关产品推荐

