爬虫 jsonpath模块(吃牢饭集合)
每天一个入狱小技巧
jsonpath模块
使用场景: 例如多层嵌套的复杂字典, 要根据key和下标来批量提取value就可以用到jsonpath模块
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) 协议