爬虫学习(十六)——jsonpath
jsonpath介绍
jsonpath是一种信息抽取类库,是从json文档中抽取指定信息的工具,提供多种语言实现的版本
jsonpath对json来说,就相当于xpath对于xml
jsonpath和xpath的语法对比
jsonpath用一个抽象的名字$来表示最外层对象
网络上请求json数据的方式
import requests
# 请求json数据,使用requests模块
response =requests.get(url=url,headers=headers)
# 对json进行解码,解码utf8格式
response.encoding=("utf8")
# 获取json的content属性
content = response.content
案例一
# jsonpath的索引从0开始,区别于xpath从1开始
shu01 = jsonpath.jsonpath( shudata, "$.store.book" )
print( shu01 )
# 输出结果:[[{'category': 'reference', 'author': '李白', 'title': 'Sayings of the Century', 'price': 8.95}, {'category': 'fiction', 'author': '杜甫', 'title': 'Sword of Honour', 'price': 12.99}, {'category': 'fiction', 'author': '白居易', 'title': 'Moby Dick', 'isbn': '0-553-21311-3', 'price': 8.99}, {'category': 'fiction', 'author': '苏轼', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]]
shu0 =jsonpath.jsonpath(shudata,"$.store.book[1]")
print(shu0)
# 输出结果:显示第二个对象
# [{'category': 'fiction', 'author': '杜甫', 'title': 'Sword of Honour', 'price': 12.99}]
案例二
# 加载json文件,读成数据流
fp = open("lagou_json.json","r",encoding="utf8")
# 将数据流加载成python中显示的json格式数据
jsondata = json.load(fp)
# 解析当前json数据
# 如:或取中国A开头的市级行政区名
city = jsonpath.jsonpath(jsondata,'$..[A].[name]')
print(city)
# 输出结果:['安庆', '安顺', '安康', '澳门特别行政区', '鞍山', '安阳', '阿坝藏族羌族自治州'] 案例三
# 查找数的价格大于10元的书对象
shu = jsonpath.jsonpath(shudata,"$..book[?(@.price>10)]")
print(shu)
# 输出结果:
# 输出结果:[{'category': 'fiction', 'author': '杜甫', 'title': 'Sword of Honour', 'price': 12.99}, {'category': 'fiction', 'author': '苏轼', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]
案例四
# 查找json对象中含有‘isbn’属性的json对象
shu1 =jsonpath.jsonpath(shudata,"$..book[?(@.isbn)]")
print(shu1)
# 输出结果:[{'category': 'fiction', 'author': '白居易', 'title': 'Moby Dick', 'isbn': '0-553-21311-3', 'price': 8.99}, {'category': 'fiction', 'author': '苏轼', 'title': 'The Lord of the Rings', 'isbn': '0-395-19395-8', 'price': 22.99}]
爬虫学习(十六)——jsonpath的更多相关文章
- 强化学习(十六) 深度确定性策略梯度(DDPG)
在强化学习(十五) A3C中,我们讨论了使用多线程的方法来解决Actor-Critic难收敛的问题,今天我们不使用多线程,而是使用和DDQN类似的方法:即经验回放和双网络的方法来改进Actor-Cri ...
- Scala学习十六——XML处理
一.本章要点 XML字面量<like>this</like>的类型为NodeSeq 可以在XML字面量中内嵌Scala代码 Node的child属性产出后代节点 Node的at ...
- Python爬虫学习==>第六章:爬虫的基本原理
学习目的: 掌握爬虫相关的基本概念 正式步骤 Step1:什么是爬虫 请求网站并提取数据的自动化程序 Step2:爬虫的基本流程 Step3:Request和Response 1.request 2. ...
- Python3爬虫(十六) pyspider框架
Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.pyspider介绍1.基本功能 提供WebUI可视化功能,方便编写和调试爬虫 提供爬取进度监控.爬取结果查看 ...
- 爬虫(十六):scrapy爬取知乎用户信息
一:爬取思路 首先我们应该找到一个账号,这个账号被关注的人和关注的人都相对比较多的,就是下图中金字塔顶端的人,然后通过爬取这个账号的信息后,再爬取他关注的人和被关注的人的账号信息,然后爬取被关注人的账 ...
- Java学习十六
学习内容: 1.做毕设 2.Java异常类 3.Java包装类 1.System.exit(1):终止程序运行,终止final执行方法 2.throws抛出异常类型,throw抛出异常对象 用法:th ...
- Java开发学习(十六)----AOP切入点表达式及五种通知类型解析
一.AOP切入点表达式 对于AOP中切入点表达式,总共有三个大的方面,分别是语法格式.通配符和书写技巧. 1.1 语法格式 首先我们先要明确两个概念: 切入点:要进行增强的方法 切入点表达式:要进行增 ...
- 智能车学习(十六)——CCD学习
一.使用硬件 1.兰宙CCD四代 优点:可以调节运放来改变放大倍数 缺点:使用软排线(容易坏),CCD容易起灰,需要多次调节 2.野火K60底层 二.CCD硬件电路 ( ...
- Java编程思想学习(十六) 并发编程
线程是进程中一个任务控制流序列,由于进程的创建和销毁需要销毁大量的资源,而多个线程之间可以共享进程数据,因此多线程是并发编程的基础. 多核心CPU可以真正实现多个任务并行执行,单核心CPU程序其实不是 ...
- java web 学习十六(JSP指令)
一.JSP指令简介 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. 在JSP 2.0规范中共定义了三个指令: pa ...
随机推荐
- Kure讲HTML_列表标签及表单标签
首先我上个图来告诉大家什么是列表 左侧的这一部分就可以称为是列表或者叫树,其实我们可以通过div+css实现列表,可是考虑语义化的问题,我们还是看看html提供好的列表标签,html提供了两种列表,一 ...
- Java学习第十六天
1:List的子类(掌握) (1)List的子类特点 ArrayList: 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector: 底层数据结构是数组,查询快,增删慢 线程安全,效率低 ...
- C++ stl vector介绍
转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...
- 1.C#中的注释符
1.软件行业的道德规范 (1).程序员在日常写代码的过程中,一定要养成注释的好习惯,方便后面对理解和使用. (2).在给标识符命名的时候一定要规范,有理有据的,名字不能瞎写. 2.注释 注释符的作用: ...
- FTPUtil 多文件上传参考代码
import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java ...
- oracle多表查询和子查询练习
--1.列出至少有三个员工的所有部门和部门信息. SELECT D.DEPTNO, D.DNAME, D.LOC, T.COUNTS FROM DEPT D, (SELECT DEPTNO, CO ...
- div多选控制
此点击按钮,弹出DIV,div内容可以多项选择,点击确定,被选项回填至文本框.功能类似之前写过的一篇日期多选,不过是在其基础上,新增点击页面其他区域,隐藏div功能. 1.css部分代码 .multi ...
- [原创]Centos7 安装配置ASP.NET Core+Nginx+Supervisor
序言 此教程安装的都是最新版本的. 一键安装 有了这个神器,下面的教程就不用做了!只需运行几行代码,直接打开浏览器就可以访问! cd /home/ wget https://files.cnblogs ...
- JUnit4 学习笔记
一.环境搭建: 1.需要用的包: JUnit4.7:http://files.cnblogs.com/files/ShawnYang/junit4.7.zip hamcrest-1.2:http:// ...
- django orm 多对多自定义第三张表
# -*- coding: utf-8 -*-# Generated by Django 1.11.11 on 2018-09-02 08:07from __future__ import unico ...