Python爬虫学习之解析_jsonpath

news2024/11/27 16:45:55

 一、jsonpath的基本使用

import json

import jsonpath

obj = json.load(open('json文件','r',encoding='utf-8'))

ret = jsonpath.jsonpath(obj,'jsonpath语法')

二、jsonpath语法

e.g.

import json
import jsonpath

obj = json.load(open('jsonpath.json','r',encoding='utf-8'))

#书店所有的书的作者

author_list = jsonpath.jsonpath(obj,'$.store.book[*].author')
print(author_list)

#所有的作者
author_list = jsonpath.jsonpath(obj,"$..author")
print(author_list)

#store下面所有的元素
tag_list = jsonpath.jsonpath(obj,'$.store.*')
print(tag_list)

#store里面所有东西的price
price_list = jsonpath.jsonpath(obj,'$.store..price')
print(price_list)

#第二本书
book = jsonpath.jsonpath(obj,'$..book[1]')
print(book)

#最后一本书
book = jsonpath.jsonpath(obj,'$..book[(@.length-1)]')
print(book)

#前面两本书
#book_list = jsonpath.jsonpath(obj,'$..book[0,1]')
book_list = jsonpath.jsonpath(obj,'$..book[:2]')
print(book_list)

#条件过滤需要在()前面加一个?
#过滤出所有包含isbnd的书
book_list = jsonpath.jsonpath(obj,'$..book[?(@.isbn)]')
print(book_list)

#过滤出价格大于10元的书
book_list = jsonpath.jsonpath(obj,'$..book[?(@.price>10)]')
print(book_list)

 三、jsonpath的应用

e.g.用jsonpath获取淘票票里所有的有开通服务的城市

import urllib.request

url = "https://dianying.taobao.com/cityAction.json?activityId&_ksTS=1706267255171_108&jsoncallback=jsonp109&action=cityAction&n_s=new&event_submit_doGetAllRegion=true"

headers = {
    # ':authority':'dianying.taobao.com',
    # ':method':'GET',
    # ':path':'/cityAction.json?activityId&_ksTS=1706267255171_108&jsoncallback=jsonp109&action=cityAction&n_s=new&event_submit_doGetAllRegion=true',
    # ':scheme':'https',
    'Accept':'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, */*; q=0.01',
    # 'Accept-Encoding':'gzip, deflate, br',
    'Accept-Language':'zh-CN,zh;q=0.9',
    'Bx-V':'2.5.10',
    'Cookie':'t=64523a4057c364f895e0fde2532013c6; cookie2=15b03a835ef4f0d11750ddce172c7df9; v=0; _tb_token_=e59eb1338be3b; cna=sn06HiZsnGECAQAAAABYf/O6; xlly_s=1; tb_city=350500; tb_cityName="yKrW3Q=="; tfstk=eUGp3os5FhxH1fs4IBpia1u5vX8MnX3e-DufZuqhFcnt0DLUE9DnegEtlerHUpo-B0iaKkG-z_USP08UqeJi82PzNnx0wI0E8DFT6QAcC2Cqd7tDmCXG5J-3Nvf_H6jjL1pJq1fZ_bUBh0FFGQl0WyeL2_qOw8GNiREXul5fGkULpa0QX_1S6g8mijBWniqYr9T9WTWzdPSNdEQ-WK5x2PEDSOXPUR4aWoY9WTWzdPzTmFAGUTyg7; isg=BAIC-i520256MM-y8z-Fp5vTUwhk0wbtainyVUwaf3Ugn6YZNGN-_b6RT5vjz36F',
    'Referer':'https://dianying.taobao.com/',
    'Sec-Ch-Ua':'"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
    'Sec-Ch-Ua-Mobile':'?0',
    'Sec-Ch-Ua-Platform':'"Windows"',
    'Sec-Fetch-Dest':'empty',
    'Sec-Fetch-Mode':'cors',
    'Sec-Fetch-Site':'same-origin',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'X-Requested-With':'XMLHttpRequest'
}

request = urllib.request.Request(url = url,headers = headers)

response = urllib.request.urlopen(request)

content = response.read().decode('utf-8')

#split切割
content = content.split('(')[1].split(")")[0]

fp = open('jsonpath应用之淘票票.json','w',encoding='utf-8')
fp.write(content)

import json
import jsonpath

obj = json.load(open('jsonpath应用之淘票票.json','r',encoding='utf-8'))

city_list = jsonpath.jsonpath(obj,'$..regionName')

print(city_list)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425792.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HashCat 恢复Excel、Word、PPT密码保姆教程

HashCat 恢复Excel、Word、PPT密码 一、流程 整体需要两个步骤 先用office2john.py获取下文件的hash值 python office2john.py 1.xlsx > hash这个命令需要你电脑有python环境,然后在cmd命令窗口中执行此命令就行 文件链接:https://github.com/magnu…

Spring-集成Web

一、引子 前面我们在Spring集成Junit中为读者引出了Spring善于集成其它框架的优势,而Spring项目不可能仅限于小范围的某个方法的测试,终究会落脚于Web项目上。于是,我们就从这里正式进入Spring集成Web的话题。由于笔者会从原生的Java Web开发…

Kotlin中的内置函数-apply、let

在使用Kotlin的过程中会经常用到其内置函数,包括apply,let,run,with,also,takeIf,takeUnless函数等,想要更好熟悉Kotlin,这些函数必须烂熟于心,接下来让我们来逐步了解&a…

7.1、一致公钥密码系统

7.1、一致公钥密码系统 一、引言 在本节中,我们将描述一个真实公钥密码系统的玩具模型。这个模型与维数为 2 的格有着意想不到的联系,由于维数太低,因此存在致命漏洞。不过,它也是一个具有启发性的例子,说明了即使基…

【Pytorch】CNN中的Attention

目录 更大层面上的Attention在attention中,怎么分区channel-wise还是spatial-wise举一个Spatial-Channel Attention的例子 使用广泛的Dot-product Attentionattention机制中的query,key,value的概念解释Attention的一个例子 更大层面上的Attention 在attention中&a…

网络服务综合实验项目

目录 实验要求 运行环境 基础配置 业务需求 实验步骤 一、基础配置 1.1、配置静态IP 1.1.1、 在192.168.159.130中配置 1.1.2、 在192.168.159.131中配置 ​编辑 1.2、修改主机名及hosts映射 1.2.1、在192.168.159.130中配置 1.2.2、 编辑配置hosts文件 1.2.3、重启…

1. 两数之和(C++)(map)(哈希算法)

✨欢迎来到脑子不好的小菜鸟的文章✨ 🎈创作不易,麻烦点点赞哦🎈 所属专栏:刷题 我的主页:脑子不好的小菜鸟 文章特点:关键点和步骤讲解放在 代码相应位置 前提: 看本文章之前,建…

前端开发项目技术总结

前端 vue框架简单学了一遍,也做了demo,主要学了创建项目、路由、状态管理、UI组件库等。 最近在做前端的项目,总结一些开发遇到的问题和解决方案 数据绑定模型 vue框架的标签 :data 和prop标签 data绑定对应的模型,prop是对应…

【C++杂货铺】详解类和对象 [下]

个人博客:代码菌-CSDN博客 专栏:C杂货铺_代码菌的博客-CSDN博客 目录 🌈前言🌈 📁 初始化列表(灰常重要) 📂 引入 📂 概念 📂 特性 📁 拓展构…

【计算机二级考试C语言】C递归

目录 C 递归 数的阶乘 实例 斐波那契数列 实例 C 递归 递归指的是在函数的定义中使用函数自身的方法。 举个例子: 从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事呢!故事是什么呢?"从…

关闭idea之后,项目还在运行,端口被占用

今天在写项目的时候,中途安装了一个插件,而且插件显示需要重启idea,重启的时候项目正在运行,重启之后发现idea没有显示有项目正在运行,当我要开启项目的时候,发现无法开启,显示端口被占用了&…

您企业的(AI)人工智能处于哪个准备阶段?

全新AI准备度评估工具现已推出 根据Gartner 2020年CIO调查报告,仅19%的首席信息官声称其AI项目已投产。这意味着,如果要将AI计划部署到生产过程中,高达80%的企业无法实现。我们发现,澳鹏客户取得成功的几率要高出三倍&#xff0c…

@Test Annotation属性- dependsOnMethods属性

目录 语法 如果test1()失败了怎么办?test2()测试会发生什么,因为它依赖于test1? 如果我们在test1()方法上不使用Test注释,但在test 2(&#xf…

放弃Nacos作为配置中心,转而选择这款神器~

目前,我们所有微服务的配置中心都没有采用Nacos,而是选择了另一款携程开源的分布式配置中心Apollo,今天就跟大家详细介绍一下这款神级配置中心 1. 基本概念 由于 Apollo 概念比较多,刚开始使用比较复杂,最好先过一遍…

YOLOv5改进系列(29)——添加DilateFormer(MSDA)注意力机制(中科院一区顶刊|即插即用的多尺度全局注意力机制)

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2)——添加CBAM注意力机制 YOLOv5改进系列&…

【Java 数据结构】栈和队列

栈和队列 1. 栈(Stack)1.1 概念1.2 栈的使用1.3 栈的模拟实现1.4 栈的应用场景1.5 概念区分 2. 队列(Queue)2.1 概念2.2 队列的使用2.3 队列模拟实现2.4 循环队列 3. 双端队列 (Deque)4. 面试题 1. 栈(Stack) 1.1 概念 栈:一种特殊的线性表,其只允许在…

STM32入门教程-2023版【5-1】NVIC

关注 点赞 不错过精彩内容 大家好,我是硬核王同学,最近在做免费的嵌入式知识分享,帮助对嵌入式感兴趣的同学学习嵌入式、做项目、找工作! 四、NVIC (1)NVIC基本结构 外部中断的整体结构图如下: 这个NVI…

代码随想录算法训练营29期|day37 任务以及具体任务

第八章 贪心算法 part06 738.单调递增的数字 版本2 class Solution {public int monotoneIncreasingDigits(int n) {String s String.valueOf(n);char[] chars s.toCharArray();int start s.length();for (int i s.length() - 2; i > 0; i--) {if (chars[i] > chars…

利用ASM功能实现零停机oracle RAC存储迁移

在实际生产过程中,经常会遇到比如新旧存储替换等场景,如果是一般情况可能只有做数据迁移才能实现,而迁移可能就存在停机的可能 这里介绍利用ASM DG加盘踢盘功能实现零停机存储迁移;原理很简单 将新存储磁盘添加到data dg&#xf…

江科大stm32学习笔记9——OLED调试工具

一、OLED OLED:有机发光二极管,供电3~5.5V,0.96寸OLED通信协议:I2C/SPI,分辨率:128*64 二、调试方式 串口调试:通过串口通信,将调试信息发送到电脑端,电脑使用串口助手…