07-数据提取-jsonpath

jsonpath用来解析多层嵌套的json数据
jsonpath官方文档

安装
pip install jsonpath
语法
JSONPath 描述
$ 根节点
. or [] 子节点
.. 不管位置,选择所有符合条件的条件
使用

字典的根节点为最外部大括号
jsonpath()返回一个结果列表

import jsonpath

dict_data = { "store": {
    "book": [
      { "category": "reference",
        "author": "Nigel Rees",
        "title": "Sayings of the Century",
        "price": 8.95
      },
      { "category": "fiction",
        "author": "Evelyn Waugh",
        "title": "Sword of Honour",
        "price": 12.99
      },
      { "category": "fiction",
        "author": "Herman Melville",
        "title": "Moby Dick",
        "isbn": "0-553-21311-3",
        "price": 8.99
      },
      { "category": "fiction",
        "author": "J. R. R. Tolkien",
        "title": "The Lord of the Rings",
        "isbn": "0-395-19395-8",
        "price": 22.99
      }
    ],
    "bicycle": {
      "color": "red",
      "price": 19.95
    }
  }
}

print(jsonpath.jsonpath(dict_data, "$.store.bicycle.price"))
>>[19.95]
print(jsonpath.jsonpath(dict_data, "$..price"))
>>[8.95, 12.99, 8.99, 22.99, 19.95]
练习

爬取bilibili电影分类下的欧美电影数据

import json
import jsonpath
import requests

url="https://api.bilibili.com/archive_rank/getarchiverankbypartion?jsonp=jsonp&tid=145&pn=1"

headers={"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Mobile Safari/537.36"}

responses=requests.get(url,headers=headers)

html_dict=json.loads(responses.content)

movie=jsonpath.jsonpath(html_dict,"$..data..archives..title")

for i in movie:
    with open("bilibili.txt","a",encoding='utf-8') as f:
        f.write(i+"\n")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • 《西游记》这本书出自于明朝。是明朝的吴承恩写的,这本书主要讲的是唐僧和三个徒弟西天拜佛求经的故事,路上总是...
    一帆风顺_af2f阅读 668评论 0 0
  • 十一月十九日我们的好朋友,许多人都爱戴的新诗人,徐志摩突兀的,不可信的,惨酷的,在飞机上遇险而死去。这消息在二...
    挚爱WiFi阅读 455评论 0 0
  • 晚上,在朋友的邀约下,去看了《从你的全世界路过》,很意外的没有以为的那么难看。电影里,听广播的细节,倒是让我想起了...
    小马君_Ellie阅读 2,127评论 25 32