目录

一、JsonPath安装

二、JsonPath使用

2.1、JsonPath和xpath语法对比

2.2、jsonpath具体使用方法

2.2.1、jsonpath 获取参数

2.2.2、对应的 json 字符串:

2.2.3、对应的python代码

三、Jsonpath解析淘票票

3.1、python代码

3.1.1、获取 json 数据并保存至本地

3.1.2、根据本地 json 文件获取相应信息

3.2、结果


一、JsonPath安装

二、JsonPath使用

注意:JsonPath只能解析本地文件,不能解析服务器响应的文件

2.1、JsonPath和xpath语法对比

2.2、jsonpath具体使用方法

2.2.1、jsonpath 获取参数

2.2.2、对应的 json 字符串:

{"store": {"book":[{"category": "修真","author": "六道","title": "坏蛋是怎样炼成的","price": 8.95},{"category": "修真","author": "天蚕土豆","title": "斗破苍穹","price": 12.99},{"category": "修真","author": "唐家三少","title": "斗罗大陆","isbn": "0-553-21311-3","price": 8.99},{"category": "修真","author": "南派三叔","title": "皇辰变","isbn": "0-395-19395-8","price": 22.99}],"bicycle": {"color": "黑色","price": 19.95}}
}

2.2.3、对应的python代码

import jsonpath
import jsonobj = json.load(open('20_爬虫_解析_jsonpath.json', 'r', encoding='utf8'))# 书店所有书的作者(xpath:/store/book/author)
author_list = jsonpath.jsonpath(obj, '$.store.book[*].author')# 书店第一本书
book_first = jsonpath.jsonpath(obj, '$..book[0]')# 书店最后一本书
book_last = jsonpath.jsonpath(obj, '$..book[(@.length-1)]')# 书店前两本书
book_list_second1 = jsonpath.jsonpath(obj, '$..book[0,1]')
book_list_second2 = jsonpath.jsonpath(obj, '$..book[:2]')# 所有的作者(xpath://author)
author_allList = jsonpath.jsonpath(obj, '$..author')# store下面的所有元素
tag_list = jsonpath.jsonpath(obj, '$.store.*')# store里面的所有钱
price_list = jsonpath.jsonpath(obj, '$.store..price')# 条件过滤,需要在()前加"?"
# 过滤出所有包含isbn的书
book_list_isbn = jsonpath.jsonpath(obj, '$..book[?(@.isbn)]')# 条件过滤,需要在()前加"?"
# 哪本书超过10块钱
book_list_overTen = jsonpath.jsonpath(obj, '$..book[?(@.price>10)]')print(book_list_overTen)

三、Jsonpath解析淘票票

3.1、python代码

3.1.1、获取 json 数据并保存至本地

import urllib.request
import json
import jsonpathurl = 'https://dianying.taobao.com/cityAction.json?activityId&_ksTS=1662563919541_108&jsoncallback=jsonp109&action=cityAction&n_s=new&event_submit_doGetAllRegion=true'headers = {# 带:的属性会报错,不能使用# ':authority': 'dianying.taobao.com',# ':method': 'GET',# ':path': '/cityAction.json?city=110100&_ksTS=1662562312158_19&jsoncallback=jsonp20&action=cityAction&n_s=new&event_submit_doLocate=true',# ':scheme': 'https',# 编码格式与爬虫不符# 'accept-encoding': 'gzip, deflate, br',
}request = urllib.request.Request(url=url, headers=headers)response = urllib.request.urlopen(request)content = response.read().decode('utf8')# 结果:jsonp20({"returnCode":"0","returnValue":{"city":110100,"name":"北京"}}); 需要去掉”jsonp20();“
# 切割,获取json字符串
content = content.split('(')[1].split(')')[0]with open('21_爬虫_解析_jsonpath淘票票.json', 'w', encoding='utf8') as fp:fp.write(content)

3.1.2、根据本地 json 文件获取相应信息

import json
import jsonpathobj = json.load(open('21_爬虫_解析_jsonpath淘票票.json', 'r', encoding='utf8'))city_list = jsonpath.jsonpath(obj, '$..regionName')print(city_list)

3.2、结果

注意:红框内为有效json,其他字符串为非json字符串,在进行json识别时,需要去掉。

数据解析——Jsonpath相关推荐

  1. python网络爬虫系列(五)——数据提取 jsonpath模块

    一.数据提取概述 知识点 了解 响应内容的分类 了解 xml和html的区别 1. 响应内容的分类 在发送请求获取响应之后,可能存在多种不同类型的响应内容:而且很多时候,我们只需要响应内容中的一部分数 ...

  2. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [四] JSON数据解析

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 场景模拟 接上一篇, 假设由于漏存JD SKU对应的店铺信 ...

  3. 【python】——爬虫03 数据提取[jsonpath模块、lxml模块]

    目录 一.概述 1. 响应内容分类 2. xml和html 3. 数据解析 二.jsonpath模块 1. 提取数据的方法 2. jsonpath语法规则 3. jsonpath练习:获取拉钩网城市j ...

  4. python爬虫数据解析总结

    python爬虫数据解析总结 目录 python爬虫数据解析总结 1.概述 2.Xpath解析html数据 2.1.基本语法 1.查询语法 2.2.Xpath解析html数据 1.安装lxml库 2. ...

  5. 爬虫之常用数据解析方法

    爬虫之常用数据解析方法

  6. iOS - XML 数据解析

    前言 @interface NSXMLParser : NSObjectpublic class NSXMLParser : NSObject 1.XML 数据 XML(Extensible Mark ...

  7. php接口 汉字出错 空,php接口开发时,数据解析失败问题,字符转义,编码问题(示例代码)...

    php接口开发时,数据解析失败问题,字符转义,编码问题 情景: A平台--->向接口请求数据---->接口向B平台请求数据---->B平台返回数据给接口---->接口返回数据给 ...

  8. Android JSON数据解析(GSON方式)

    要创建和解析JSON数据,也可以使用GSON来完成.GSON是Google提供的用来在Java对象和JSON数据之间进行映射的Java类库.使用GSON,可以很容易的将一串JSON数据转换为一个Jav ...

  9. Android学习之JSON数据解析

    在Android应用开发中,常用的数据交换格式有XML和JSON,这两种方式各有各的好处,我们在特定的应用开发中可以选择合适的一种.下面来看一下JOSN数据解析: 例子永远是最好的教程,下面我们来看个 ...

  10. 【2020/6/24整理版】利用csi tool获取csi数据并进行数据解析----适合初学的小白

    1.准备工作 <1> 查看自己电脑是否能安装Intel 5300网卡,不能安装的话直接看文章最后,尝试Atheros csi tool工具. <2> 安装Ubuntu系统,cs ...

最新文章

  1. 心酸科研路:3年前CVPR论文,仅被引用11次,如今成就黑洞照片!
  2. python操作mysql的增删改查_详解使用pymysql在python中对mysql的增删改查操作(综合)...
  3. python使用教程pandas-Python之Pandas使用教程
  4. vue 实例化几种方式_Vue双向数据绑定
  5. 微软开源Bing搜索背后的关键算法
  6. Problem b(BZOJ-2301/HAOI-2011)
  7. 记一次由PCI BAR配置不正确引发的硬盘IO调度io_schedule阻塞的经历
  8. (Oracle)rownum用法详解 转载的
  9. python中object类的源码在哪里-[Python之路] object类中的特殊方法
  10. 【信息论】信源与信源熵(一)
  11. 对有效性的认识(卓有成效的管理者)
  12. 【数字IC验证快速入门】4、熟悉数字IC验证中常用的Linux基本操作
  13. linux xps文件,XPS文件擴展名: 它是什麼以及如何打開它?
  14. openCV实践项目:拖拽虚拟方块
  15. 计算机无法识别建行网银盾,电脑无法识别建行网银盾怎么办
  16. MOSS系列一 MOSS的安装
  17. 各种手段终于将土豆视频url请求找到了
  18. FER基于卷积神经网络: 处理少量数据和训练样本订单FER with CNN:Coping with few data and the training sample order
  19. 《人间告白.金鱼酱》摘录和读后感
  20. C - 开门人和关门人(结构体+sort)

热门文章

  1. VastBase技术实践
  2. 《银行业金融机构数据治理指引》解读及解决方案建议
  3. C语言实现99乘法表
  4. 人体时钟android,人体时钟屏保-不一样的阿拉伯数字时钟
  5. 关于颜色的十六进制对照表
  6. 主曲率,主方向,高斯曲率与平均曲率公式与matlab代码
  7. 计算机考研百天,2021非全日制研究生备考即将进入百天倒计时的你还在坚持吗?...
  8. 【目标检测】目标检测算法-从OverFeat到YOLO
  9. ARINC818与FC-AV的区别,优势对比以及常见案例
  10. redis雪崩、击穿、穿透