python爬虫笔记03--jsonpath

本文介绍了Python中使用json模块进行数据解析的方法,包括json字符串与Python对象之间的转换,以及jsonpath语法的应用,通过具体案例展示了如何提取复杂json数据结构中的特定信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、json模块

1、loads()方法,json字符串转python对象。

list_json = '[1,2,3,4]'
dict_json = '{"key1":{"k1":"v1","k2":"v2"},"key2":{"k1":"v1","k2":"v2"}}'

list_ret = json.loads(list_json)
dict_ret = json.loads(dict_json)

会把true,false转为True,False,如果json字符串中的有True,False会报错。

2、dumps()方法,python对象转json字符串。

list_ = [1,2,3,4]
dict_ = {"key1":{"k1":"v1","k2":"v2"},"key2":{"k1":"v1","k2":"v2"}}

list_json = json.dumps(list_)
dict_json = json.dumps(dict_)

会把True,False转为true,false。

二、jsonpath语法与xpath的对比
描述xpathjsonpath
根元素/$
当前元素.@
子元素/.或者[]
父元素
不计位置//
通配符,所有元素**
属性@
子元素操作符[][]
|[XXX,XXX,XXX]
元素分割[start:end]
过滤表达式[]?()
脚本表达式()
分组()
三、使用案例
{ "store": {
    "book": [
      { "category": "reference",
        "author": "小张",
        "title": "python从入门到精通",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "小赵",
        "title": "python从入门到放弃",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "小李",
        "title": "python从入门到脱发",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "小明",
        "title": "python从入门到入土",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}
表达式结果
$.store.book[*].author书店所有书的作者
$…author所有的作者
$.store.*store的所有元素
$.store…pricestore里面所有东西的price
$…book[(@.length-1)]最后一本书
..book[0,1]、..book[0,1] 、..book[0,1]…book[0:2] 、$…book[:2]前面的两本书。
$…book[?(@.isbn)]过滤出所有的包含isbn的书。
$…book[?(@.price<10)]过滤出价格低于10的书。
$…*所有元素
三、python中使用jsonpath、
import jsonpath
#匹配成功返回结果列表,未匹配成功返回False
ret = jsonpath.jsonpath(obj,'表达式')

obj必须为python对象,如果是json字符串需要使用json.loads方法转换成python对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值