介绍
要用 jsonpath 实现类似的需求,首先需要明确你想要解析的文档是JSON格式的数据。jsonpath 是用于解析和提取JSON数据的路径表达式语言,类似于XPath用于XML的数据解析。假设你的目标是从某个JSON格式的网页数据中提取图片URL,下面是如何使用 jsonpath 完成这一任务。
1. 安装必要的库
bash
复制代码
pip install jsonpath-ng requests
2. 示例代码实现
python
复制代码
import requests
import json
import jsonpath
# 假设这是获取到的JSON数据
url = 'https://example.com/jsondata'
response = requests.get(url)
data = response.json() # 获取JSON响应
# 使用JSONPath提取所有图片URL
image_urls = jsonpath.jsonpath(data, '$..imgUrl')
# 下载图片
for idx, img_url in enumerate(image_urls[0]): # jsonpath 返回的是列表
if img_url.startswith('http'):
img_response = requests.get(img_url)
with open(f'jay_chou_image_{idx}.jpg', 'wb') as f:
f.write(img_response.content)
print(f"图片 {idx} 下载成功!")
3. JSONPath语法和使用方式
- 基本语法:
$.key,表示访问根元素的键。 - 递归降级:
$..key,可以访问文档中所有层级的某个键。 - 数组索引:
$.items[0],表示获取数组中第一个元素。数组索引:$.items[0],表示获取数组中第一个元素。 - 过滤:
$.items[?(@.key=="value")],对数组进行条件过滤。过滤:$.items[?(@.key=="value")],对数组进行条件过滤。
例如,$..imgUrl 可以提取所有JSON结构中的 imgUrl 字段。