泉州住房与城乡建设网站,沈阳模板建站代理,赤峰做企业网站公司,有效的引流推广方法一、JsonPath JsonPath 是一种信息抽取类库#xff0c;是从JSON文档中抽取指定信息的工具#xff0c;提供多种语言实现版本#xff0c;包括#xff1a;Javascript, Python#xff0c; PHP 和 Java。也就是独立的可以配合多种语言进行匹配的目标值的一种类库#xff0c;和…一、JsonPath JsonPath 是一种信息抽取类库是从JSON文档中抽取指定信息的工具提供多种语言实现版本包括Javascript, Python PHP 和 Java。也就是独立的可以配合多种语言进行匹配的目标值的一种类库和jmeter中的jsonPath匹配方式很像(具体参考此文章https://www.cnblogs.com/Zhan-W/p/10985816.html )。优点之一 数据可以通过交互方式从客户端上的JSON结构提取不需要特殊的脚本。
二、JsonPath特性 只能提取json格式的数据提取后的数据类型与原数据类型一致三、 JsonPath安装 pip install jsonpath -i https://pypi.doubanio.com/simple 四、 JsonPath 语法元素 官方文档JSONPath - XPath for JSON 过滤表达式 五、 JsonPath 使用
import requests
import json
import jsonpathif __name__ __main__:# 1.确认目标urlurl_ https://www.lagou.com/lbs/getAllCitySearchLabels.json# 用户代理的代理headers_ {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36}# 2.发送网络请求获取响应对象response_ requests.get(url_, headersheaders_)#获取python格式自动类型转换py_dataresponse_.json() # json()这是一个方法print(type(py_data),py_data)# $根元素#1获取所有城市名称namesjsonpath.jsonpath(py_data,$..name)print(len(names),names)# .or []子元素#2获取所有城市中按字母分类的第一个城市的所有信息resjsonpath.jsonpath(py_data,$..allCitySearchLabels.*[:1])print(len(res),res)# [, ]支持迭代器中做多选多个key用逗号隔开#3获取A字母的城市名和父城市idresjsonpath.jsonpath(py_data,$..A.[name,parentId])print(len(res),res)#4获取B字母的城市下的第0个和第16个城市信息resjsonpath.jsonpath(py_data,$..B[0,16])print(len(res),res)# [startendstep]数组分割操作等同于切片, 遵循左闭右开原则#5获取B字母的城市下的前2个城市信息resjsonpath.jsonpath(py_data,$..B[:2])print(len(res),res)# ?()应用过滤表示式#6获取B字母的城市下的id编号大于850的信息resjsonpath.jsonpath(py_data,$..B.[?(.id850)])print(len(res),res)# 等于# 7查询城市是福州的城市信息res jsonpath.jsonpath(py_data, $..*[?(.name福州)])print(len(res), res)# in 所属符号# 8查询城市是杭州北京天津的城市信息res jsonpath.jsonpath(py_data, $..*[?(.name in [杭州,北京,天津])])print(len(res), res)# 8查询城市是杭州北京天津的code信息res jsonpath.jsonpath(py_data, $..*[?(.name in [杭州,北京,天津])].code)print(len(res), res)# not in 排除符号# 9查询城市不是杭州北京天津的城市信息res jsonpath.jsonpath(py_data, $..*[?(.name not in [杭州,北京,天津])])print(len(res), res)# 逻辑AND用于合并多个过滤器表达式# 10查询城市是杭州,并且ID是653的城市信息res jsonpath.jsonpath(py_data, $..*[?(.name 杭州 .id653)])print(len(res), res)# || 逻辑OR用于组合多个过滤器表达式# 11查询城市是杭州, 或者ID大于1000的城市信息res jsonpath.jsonpath(py_data, $..*[?(.name 杭州 || .id1000)])print(len(res), res)