上一篇文章中我们爬取了数据但没有分析json数据我将豆瓣的那个接送数据复制过来。
在复制之前呢,我们可以先把复制的数据放到json.cn这个网页看一下。
会把我们的数据格式话这样子,让我们一眼可以看的清楚。有一个大括号把一部电影的数据呢全部包围起来了,有电影名称,评分,链接等等。一般我们要获取数据呢基本都是跨节点,又快,又不容易出错。
上部分链接:json解析豆瓣数据_weixin_58520733的博客-CSDN博客
# 这里面的代码可以参照我上一次写的那个获取豆瓣那个代码一起用
# $..title
# 跟目录开始 跨节点 只需要属性名为title的值 都取到...
res_ = jsonpath.jsonpath(data_, '$..title')
print(res_)
# $.subjects.* store下的所有的元素
res_ = jsonpath.jsonpath(data_, '$.subjects.*')
print(res_)
# $.subjects.rate subjects中的所有评分,这里用第一种方法也行
res_ = jsonpath.jsonpath(data_, '$.subjects.rate')
print(res_)
# $..rate[2] 第三个电影的评分
res_ = jsonpath.jsonpath(data_, '$..tate[2]') # 从0开始
print(res_)
# 索引取值从0开始, 结果为列表.....
# $..title[(@.length-1)] or $..title[-1:] 最后一个电影的名称
res_ = jsonpath.jsonpath(data_, '$..title[-1:]') # 从0开始
print(res_)
res_ = jsonpath.jsonpath(data_, '$..title[(@.length-1)]') # 从0开始
print(res_)
# $..title[0,1] | $..title[:2] 前两个电影名称
res_ = jsonpath.jsonpath(data_, '$..title[0,1]') # 从0开始
print(res_)
res_ = jsonpath.jsonpath(data, '$..title[:2]') # 从0开始
print(res_)
# $..title[?(@.rata<5)] 获取评分小于5的所有的电影
res_ = jsonpath.jsonpath(data_, '$..title[?(@.rate<5)]') # 从0开始
print(res_)
# $..* 获取所有的数据
res_ = jsonpath.jsonpath(data_, '$..*') # 从0开始
print(res_)