爬虫之jsonpath模块

1. jsonpath模块的安装

  1. jsonpath是第三方模块,需要额外的安装

    pip3 install jsonpath
    

2. jsonpath模块提取数据的方法

from jsonpath import jsonpath

# 返回对象是一个列表
ret = jsonpath(data, 'jsonpath语法')

3. jsonpath语法规则

JSONPath描述
$根节点,即json数据最外层的大括号
@现行节点
. or []子节点
n/a取父节点,Jsonpath未支持
..内部任意位置子孙节点
*匹配所有元素节点
n/a根据属性访问,Json不支持,因为Json是个Key-Value递归结构,不需要属性访问
[]迭代器标识(可以在这里边做简单的迭代操作,如数组下标,根据内容选值等)
[,]支持迭代器中做多选
?()支持过滤操作
()支持表达式计算
n/a分组,JaonPath不支持

4. jsonpath应用示例

from jsonpath import jsonpath

data = {"key1": {"key2": {"key3": {"key4": {"key5": {"key6": "python3"}}}}}}

result = jsonpath(data, '$.key1.key2.key3.key4.key5.key6')
print(result)

result = jsonpath(data, '$..key6')
print(result)
"""
拉勾网json格式城市数据接口
https://www.lagou.com/lbs/getAllCitySearchLabels.json
"""

import json
from jsonpath import jsonpath

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
						  "(KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36"}

resp = requests.get("https://www.lagou.com/lbs/getAllCitySearchLabels.json", headers=headers)

dict_data = json.loads(resp.content)

# 获取所有的城市开头的字母
result = jsonpath(dict_data, "$..allCitySearchLabels")[0].keys()
# print(result)

# 获取所有城市名
result = jsonpath(dict_data, "$..name")
# print(result)

# 获取以A开头的城市名
result = jsonpath(dict_data, "$..A..name")
print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值