Python爬虫——json解析

在Python中,处理JSON数据经常涉及到解析JSON对象或数组,并根据特定的路径(或者说"键")访问数据。虽然标准的json库提供了基础的解析功能,但当你需要按照类似于XPath的路径来访问嵌套的JSON对象时,可以使用jsonpath库,它可以让你以类似XPath的方式查询JSON数据。

安装jsonpath库

首先,你需要安装jsonpath-ng库,这是一个支持JSONPath的Python库。你可以使用pip来安装它:

bash

pip install jsonpath-ng

使用jsonpath-ng解析JSON

jsonpath-ng提供了jsonpath模块,你可以使用这个模块来解析JSON数据。以下是一些基本示例:

示例JSON数据

假设我们有以下JSON数据:

{

"store": {

"book": [

{

"category": "fiction",

"author": "Herman Melville",

"title": "Moby Dick",

"price": 8.99

},

{

"category": "programming",

"author": "John Doe",

"title": "Learning Python",

"price": 29.99

}

],

"bicycle": {

"color": "red",

"price": 19.95

}

}

}

以下是一些常见的 JSONPath 语法示例:

$:表示 JSON 文档的根。

.:用于访问对象的属性。

\[\]:用于访问数组元素或通过键名访问对象属性。

*:通配符,匹配所有元素或属性。

..:递归下降,查找所有层级的指定属性。

?():过滤表达式,允许基于条件选择元素。

,:联合操作,允许选择多个结果。

假设我们想找到所有书的标题和价格,我们可以使用如下的JSONPath表达式:

parsed = jsonpath.jsonpath(data, '$.store.book\*.{title,price}') for match in parsed: print(match.value) # 这将输出每本书的标题和价格字典

相关推荐
武陵悭臾1 小时前
Python应用开发学习:如何让随机数按一定比列出现
python·学习·random·概率·随机数
蓝冰凌2 小时前
vscode 用户级 settings.json
ide·vscode·json
amongdata2 小时前
MyVoiceTyping:面向中文语音输入的本地优先开源方案
python·开源·音视频·语音识别
薛定猫AI2 小时前
【技术干货】大模型检查点可靠性评测:基于 Python 构建幻觉与指令遵循测试
开发语言·python
Mr__Miss2 小时前
Java 随机数生成器选型指南:Random、ThreadLocalRandom 与 SecureRandom
java·开发语言·python
CTA量化套保2 小时前
2026年下半年Python量化入门,先看API如何接进小流程
人工智能·python
薛定猫AI3 小时前
【深度解析】动态多智能体团队:并行规划、开发与验证的 Python 实战
大数据·开发语言·python
嘘嘘出差3 小时前
爬虫中级——滑块验证码的应对方法
爬虫
yaoxin52112314 小时前
462. Java 反射 - 获取声明类与封闭类
java·开发语言·python