爬虫学习(十五)——json解析
json与jsonpath
对象{}:jsonobject
对象:对象在js中表现为{}括起来的内容,数据结构为{key:value,key:value...}键值对的结构,在面向对象的结构中,key为对象的属性,key所对应的value为对象的属性值。
取值方式:对象.key 获取属性值,这个属性值的数据类型可以是数字、字符串、数据、对象等
数组[]:JSONArray
数组:在js中是中括号[]括起来的内容,数据结构类似此格式["Python", "javascript", "C++", ...]
取值方式:类似python语言中的列表,使用索引进行取值,数组中的值可以是数字、字符串、数组、对象等
json方法
1、load()将数据加载成为json类型的数据
读取json文件中的字符串,转化成为python数据类型
如:
obj = json.load(open('book.json', 'r', encoding='utf-8'))
print(type(obj))
2、loads()解码json字符串为json数据
将json格式字符串解码转换成为python对象,从json到python的数据数据转化类型可以对照图表

with open('./book.json',mode='r',encoding='utf-8') as f:
json_string = f.read()
# 将json格式字符串转化为对象
obj = json.loads(json_string)
print(type(obj))
3、string串
将json数据
4、dumps()
实现python数据类型转化成为json字符串,返回一个str对象,把python对象编码转换成为json字符串
从python原始类型向json类型转化的对照表如下:

如下:
import json
str = '''{"has_more": false, "message": "success", "data": [{"single_mode": true, "abstract": "\u8c22\u8c22\u5927\u5bb6\u559c\u6b22\u6bcf\u65e5\u64b8"}]}'''
print(type(str))
print(json.dumps(str,ensure_ascii=False))
5、dump
将python类型序列化成json对象后写入文件
如:
import json
dictStr = {"city": "北京", "name": "大刘",'info':'\u8c22\u8c22\u5927'}
# Serialize ``obj`` as a JSON formatted stream to ``fp
json.dump(dictStr, open("dictStr.json","w",encoding='utf-8'), ensure_ascii=False,)
6、练习总结
import json
# 将文件中的文件读取处理,输出的数据类型为流(字符序列)数据
fp = open("json数据.json",mode="r",encoding="utf8")
# 将流数据加载变成json类型的数据
j = json.load(fp)
print(j,type(j))
# 输出结果:
# {'book': [{'name': '时间简史', 'author': '斯蒂芬·威廉·霍金'}, {'name': '三国演义', 'author': '罗贯中'}]} <class 'dict'> # 将json类型的数据转化成为python的字符串类型的数据,并将中文的阿斯克码形式转化成中文
a = json.dumps(j,ensure_ascii=False)
print(a,type(a))
# 输出结果
# {"book": [{"name": "时间简史", "author": "斯蒂芬·威廉·霍金"}, {"name": "三国演义", "author": "罗贯中"}]} <class 'str'> # 创建一个json格式的文件
fp2 =open("json练习二.json",mode="a",encoding="utf8") # 将json数据写入文件中,并将阿斯克码转换设置为False
json.dump(j,fp2,ensure_ascii=False)
爬虫学习(十五)——json解析的更多相关文章
- scrapy爬虫学习系列五:图片的抓取和下载
系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备: http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...
- c++11-17 模板核心知识(十五)—— 解析模板之依赖型类型名称与typename Dependent Names of Types
模板名称的问题及解决 typename规则 C++20 typename 上篇文章c++11-17 模板核心知识(十四)-- 解析模板之依赖型模板名称 Dependent Names of Templ ...
- 聊聊高并发(二十五)解析java.util.concurrent各个组件(七) 理解Semaphore
前几篇分析了一下AQS的原理和实现.这篇拿Semaphore信号量做样例看看AQS实际是怎样使用的. Semaphore表示了一种能够同一时候有多个线程进入临界区的同步器,它维护了一个状态表示可用的票 ...
- 强化学习(十五) A3C
在强化学习(十四) Actor-Critic中,我们讨论了Actor-Critic的算法流程,但是由于普通的Actor-Critic算法难以收敛,需要一些其他的优化.而Asynchronous Adv ...
- 渗透测试学习 十五、 文件上传&&解析漏洞
大纲:文件解析漏洞 上传本地验证绕过 上传服务器验证绕过 文件解析漏洞 解析漏洞主要说的是一些特殊文件被IIS.Apache.Nginx在某些情况下解释成脚本文件格式的漏洞. IIS 5.x/6.0解 ...
- Java开发学习(十五)----AOP入门案例及其工作流程解析
一.AOP简介 1.1 什么是AOP AOP(Aspect Oriented Programming)面向切面编程,一种编程范式,指导开发者如何组织程序结构. OOP(Object Oriented ...
- [Python爬虫] 之十五:Selenium +phantomjs根据微信公众号抓取微信文章
借助搜索微信搜索引擎进行抓取 抓取过程 1.首先在搜狗的微信搜索页面测试一下,这样能够让我们的思路更加清晰 在搜索引擎上使用微信公众号英文名进行“搜公众号”操作(因为公众号英文名是公众号唯一的,而中文 ...
- Python爬虫学习==>第五章:爬虫常用库的安装
学习目的: 爬虫有请求库(request.selenium).解析库.存储库(MongoDB.Redis).工具库,此节学习安装常用库的安装 正式步骤 Step1:urllib和re库 这两个库在安装 ...
- Salesforce LWC学习(十五) Async 以及 Picklist 公用方法的实现
本篇参考:salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type) https://developer.salesfo ...
- salesforce lightning零基础学习(十五) 公用组件之 获取表字段的Picklist(多语言)
此篇参考:salesforce 零基础学习(六十二)获取sObject中类型为Picklist的field values(含record type) 我们在lightning中在前台会经常碰到获取pi ...
随机推荐
- Day6 下(
T1 模拟,80? #include<iostream> #include<cstring> #include<queue> #include<algorit ...
- MVC分页技术
这个是用的插件分页技术 前台引用和js <script type="text/javascript" src="/js/jquery-1.10.2.min.js&q ...
- DataColumn.Expression提示“...循环引用”的错误
我碰到这个问题的时候,在网上找了找,找到了有好几个提出这个问题的人,但是都没有得到解答,当时很郁闷.然后再看看msdn中的解释与自己的测试,才把这个问题给解决了. 代码如下: person.Colum ...
- nopcommerce3.6中文包
nopCommerce 语言包,xml文件 点击下载:3.60_language_pack_zh.rar (60.82 kb) 下载后解压通过后台导入即可使用.如何导入?点击这里
- spoon kettle连接数据库失败解决方法
Driver class 'oracle.jdbc.driver.OracleDriver' could not be found, make sure the 'Oracle' driver (ja ...
- RabbitMQ基本用法、消息分发模式、消息持久化、广播模式
RabbitMQ基本用法 进程queue用于同一父进程创建的子进程间的通信 而RabbitMQ可以在不同父进程间通信(例如在word和QQ间通信) 示例代码 生产端(发送) import pika c ...
- helm深入学习
Helm把Kubernetes资源(比如deployments.services或 ingress等) 打包到一个chart中,而chart被保存到chart仓库.通过chart仓库可用来存储和分享c ...
- 笨办法学Python(三十四)
习题 34: 访问列表的元素 列表的用处很大,但只有你能访问里边的内容时它才能发挥出作用来.你已经学会了按顺序读出列表的内容,但如果你要得到第 5 个元素该怎么办呢?你需要知道如何访问列表中的元素.访 ...
- COGS 2091. Asm.Def的打击序列
★★★ 输入文件:asm_lis.in 输出文件:asm_lis.out 简单对比时间限制:4 s 内存限制:256 MB [题目描述] 白色圆柱形的“蓝翔”号在虚空中逐渐变大,一声沉 ...
- 安卓手机下载YouTube视频的3种方法
作为全球最大的在线视频网站,YouTube上面的内容可真是应有尽有啊,从教学视频到个人手工艺品制作流程,从各种搞笑视频到电视连续集等等,包罗万象.如果你想下载YouTube视频到电脑上面的话,网上有很 ...