主页 分类 关于

爬虫 jsonpath模块(吃牢饭集合)

每天一个入狱小技巧

jsonpath模块

使用场景: 例如多层嵌套的复杂字典, 要根据key和下标来批量提取value就可以用到jsonpath模块

jsonpath模块的安装

pip install jsonpath

提取数据方法

from jsonpath import jsonpath
ret = jsonpath(a,'jsonpath语法规则字符串')

语法规则

jsonpath 描述
$ 根节点
@ 现行节点
. or [] 取子节点
n/a 取父节点, jsonpath未支持
.. 就是不管位置, 选择所有符合条件的条件
* 匹配所有元素节点
n/a 根据属性访问, json不支持, 因为json是个Key-value递归结构, 不需要属性访问
[] 迭代器标准(可以在里边做简单的迭代操作, 如数组下标, 根据内容选值等)
[,] 支持迭代器中做多选
?() 支持过滤操作
() 支持过表达式计算
n/a 分组, jsonpath不支持

常用的

常用jsonpath 描述
$ 根节点(最外层大括号)
. 子节点
.. 子孙节点(内部任意位置, 选择所有符合条件的条件)
* 匹配所有元素节点

import requests
import jsonpath
import json

headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36"
}
response = requests.get('https://www.lagou.com/lbs/getAllCitySearchLabels.json',headers=headers)

dict_data = json.loads(response.content)

print(jsonpath.jsonpath(dict_data,'$..name'))









作者: 我叫史迪奇
本文来自于: https://sdq3.link/reptile-jsonpath.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议