jsonpath

在做爬虫的时候用的比较多的就是xpath来提取html中的数据,这个相信大家还是比较熟悉的,在python中也有这样一个第三方模块jsonpath可以直接提取json格式数据。

安装jsonpath

pip install jsonpath

如下格式数据: json格式数据

使用jsonpath获取数据方式如下:

import json
from jsonpath import jsonpath

with open('h3blog.json') as f :
    data = json.loads(f.read())

jsonpath(data, '$..steps[*].duration')

python运行结果

jsonpath 常见语法

功能 语法
根节点 $
当前节点 @
子节点 .或[]
任意子节点 *
任意后代节点 ..
# 提取所有steps键的子节点对应instruction值
jsonpath(data, '$..steps.*.instruction')

# 多选所有steps键的子节点对应的instruction与action值
jsonpath(data, '$..steps.*[instruction,action]')

# 选择steps键的第0个子节点对应的instruction与action值
jsonpath(data, '$..steps[0][instruction,action]')

# 选择steps键的第1到3(不包括3)个子节点对应的instruction与action值
jsonpath(data, '$..steps[1:3][instruction,action]')

# 配合@,选择steps键的最后一个子节点对应的instruction与action值
jsonpath(data, '$..steps[(@.length-1)][instruction,action]')

# 找到所有steps子节点中orientation为“西”的
jsonpath(data, '$..steps[?(@.orientation == "西")]')

# 找到所有具有polyline键的节点对应的polyline与road键对应值
jsonpath(data, '$..[?(@.polyline)][polyline,road]')

# 获取结果的JSONPath表达式
jsonpath(data, '$..[?(@.polyline)][polyline,road]', result_type=None)