04 Python网络爬虫 JsonPath模块

  • Post author:
  • Post category:python


1. JsonPath模块简介

JSONPath是一种基于路径表达式的查询语言,用于从JSON数据中提取或查询数据。它类似于XPath(XML Path Language),但是专门用于JSON数据。JSONPath模块是一个用于Python的第三方模块,它实现了JSONPath查询语言的解析和执行。

使用JSONPath模块,您可以通过一个简单的字符串表达式来指定要查询的JSON数据的路径。JSONPath表达式由一系列的路径操作符和通配符组成,用于定位和提取数据。一些常用的JSONPath表达式操作符和通配符包括:

  1. $:表示根节点。

  2. .:表示当前节点。

  3. ..:表示当前节点的所有子节点。

  4. *:表示所有子节点。

  5. []:表示条件过滤。

  6. @:表示当前节点或者所有子节点。

2. JsonPath  –  loads

'''
01-JSON模块-loads
将json格式转换为python格式
'''
import json
# 1.设置json数据类型(字符串对象)
strList = '[1,2,3,4]'

# 2.设置json数据类型(字符串对象)
strDict = '{"city":"北京","name":"张三丰"}'

# 3.将strList转换list  json字符串数组转换为python中的列表
print(json.loads(strList))
print(type(json.loads(strList)))

# 4.将strDict转换dict json字符串字典转换为python中的dict
print(json.loads(strDict))
print(type(json.loads(strDict)))

3. JsonPath  –  dumps

'''
02-JSON模块-dumps
'''
import json
import chardet
# 1.python常见的数据
listStr = [1,2,3,4]
tupleStr = (5,7,8,10)
dictStr = {'city':'南京','name':'我们大家'}

# 2.python中listStr转换为json中的array
print(json.dumps(listStr))
print(type(json.dumps(listStr)))

# 3.python中tupleStr转换为json中的object
print(json.dumps(tupleStr))
print(type(json.dumps(tupleStr)))

# 4.python中的dictStr转换为json的object
'''
1.json.dumps()默认的序列化是ascii编码==中文
2.添加ensure_ascii=False 代表不使用默认的序列
'''
print(json.dumps(dictStr,ensure_ascii=False))

# 5.chardet编码识别模块
'''
ensure_ascii=False 将ascii编码设置为utf-8
encoding='utf-8'bytes()函数使用的解码格式
'''
print(chardet.detect(
    bytes(json.dumps(dictStr,ensure_ascii=False),
          encoding='utf-8')))
print(chardet.detect(bytes(json.dumps(dictStr),encoding='gbk')))

4. JsonPath  –  编码问题

'''
JsonPath-编码问题
任何平台的任何编码都可以和unicode相互转换
'''
# 设置utf-8的编码的字符串
utf8Str = "您好地球"

# 1.将utf-8转换成unicode编码
# b'\xe6\x82\xa8\xe5\xa5\xbd\xe5\x9c\xb0\xe7\x90\x83'
unicodeStr = utf8Str.encode("utf-8")
print(unicodeStr)

# 2.将unicode编码转换成utf-8
utf8Str = unicodeStr.decode("utf-8")
print(utf8Str)

# 3.将unicode编码转换成gbk编码
gbkStr = unicodeStr.decode("gbk")
print(gbkStr)

# 4.将gbk编码转换成unicode
unicodeStr = gbkStr.encode("gbk")
print(unicodeStr)



版权声明:本文为zmxnn原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。