山东君天建设工程有限公司网站,双网建筑工程资质公司,典当行 网站,wordpress标签加标题本文实例讲述了Python使用jsonpath-rw模块处理Json对象操作。分享给大家供大家参考#xff0c;具体如下#xff1a;这两天在写一个爬虫#xff0c;需要从网站返回的json数据提取一些有用的数据。向url发起请求#xff0c;返回的是response#xff0c;在python3中#xff…本文实例讲述了Python使用jsonpath-rw模块处理Json对象操作。分享给大家供大家参考具体如下这两天在写一个爬虫需要从网站返回的json数据提取一些有用的数据。向url发起请求返回的是response在python3中response.content是二进制bytes类型的需要用decode()转成unicode的str类型#如果用的requests发的请求import jsonresponse requests.get(url,headersself.headers)response response.content.decode()response json.loads(response) #转成json对象在python里也就是dict类型#如果用的scrapy.Request发的请求import jsonimport scrapyresponse scrapy.Request(url,headersself.headers)response response.text.decode()response json.loads(response) #转成json对象在python里也就是dict类型也就是说处理json对象其实可以和处理dict一样那就要用到很多中括号而且取值也只能取单个精确的值。一点都不灵活用过xpath和css选择器的人当然会觉得这种方法很笨重。而恰巧json也有类型的选择器jsonpath但是需要注意的是python的库并不是jsonpath(还真有这个库但是不知如何使用官方也没有给出python的使用文档)真正在python中可以使用的库是:jsonpath-rw下面只列下简单常用的基本方法使用示例 from jsonpath_rw import jsonpath, parse json_obj {student:[{male:176,female:162},{male:174,female:159}]} jsonpath_expr parse(student[*].male) male jsonpath_expr.find(json_obj) male #返回的是list,但是不是我们想要的值[DatumInContext(value176, pathFields(male), contextDatumInContext(value{male: 176, female: 162}, path, contextDatumInContext(value[{male: 176, female: 162}, {male: 174, female: 159}], pathFields(student), contextDatumInContext(value{student: [{male: 176, female: 162}, {male: 174, female: 159}]}, pathThis(), contextNone)))), DatumInContext(value174, pathFields(male), contextDatumInContext(value{male: 174, female: 159}, path, contextDatumInContext(value[{male: 176, female: 162}, {male: 174, female: 159}], pathFields(student), contextDatumInContext(value{student: [{male: 176, female: 162}, {male: 174, female: 159}]}, pathThis(), contextNone))))]#想要获取值要用如下方法 [match.value for match in male][176, 174]