解析内容(jsonpath):
jsonpath使用方法:
json:
import json
"""
dump 把json字符串写入文件
load 读取文件中的json对象
dumps 把python对象转换为json字符串
loads 把json字符串转换为python对象
"""
da_lao_list = {
"stars": {
"No1": "高虎",
"No2": "房祖名",
"No3": "张默",
"No4": "陈羽凡",
"No5": "宁财神",
"No6": "宋冬野"
}
}
# filepath
#dict>>>str (Python对象>>>json字符串)
result_dumps = json.dumps(da_lao_list)
print(result_dumps)
print(type(result_dumps))
#str>>>dict
result_loads = json.loads(result_dumps)
print(result_loads)
print(type(result_loads))
#读出python对象
json.dump(result_loads, open("dump.txt", mode="w", encoding="utf-8"))
#写入pythonb对象
result_load = json.load(open("dump.txt"))
print(result_load)
print(type(result_load))
dump 把python对象写入文件
load 读取文件中的python对象
dumps 把json对象转换为json字符串
loads 把json字符串转换为json对象
注意:这里的python对象即为字典
jsonpath:
具体用法:
import requests
import jsonpath
import json
url = 'http://www.lagou.com/lbs/getAllCitySearchLabels.json'
response = requests.get(url)
html_str = response.content.decode()
# 把json格式字符串转换成python对象
jsonobj = json.loads(html_str)
# 从根节点开始,匹配name节点
citylist = jsonpath.jsonpath(jsonobj, '$..name')
fp = open('city.json', 'w')
#将python对象转为json字符串
content = json.dumps(citylist, ensure_ascii=False)
#然后将字符串转为二进制写入文件
fp.write(content.encode('utf-8'))
fp.close()
JSONPath | Result |
---|---|
$.store.book[*].author | store中的所有的book的作者 |
$…author | 所有的作者 |
$.store.* | store下的所有的元素 |
$.store…price | store中的所有的内容的价格 |
$…book[2] | 第三本书 |
$…book[(@.length-1)] | $…book[-1:] |
$…book[0,1] | $…book[:2] |
$…book[?(@.isbn)] | 获取有isbn的所有数 |
$…book[?(@.price<10)] | 获取价格大于10的所有的书 |
$…* | 获取所有的数据 |
{ "store": {
"book": [
{ "category": "reference",
"author": "Nigel Rees",
"title": "Sayings of the Century",
"price": 8.95
},
{ "category": "fiction",
"author": "Evelyn Waugh",
"title": "Sword of Honour",
"price": 12.99
},
{ "category": "fiction",
"author": "Herman Melville",
"title": "Moby Dick",
"isbn": "0-553-21311-3",
"price": 8.99
},
{ "category": "fiction",
"author": "J. R. R. Tolkien",
"title": "The Lord of the Rings",
"isbn": "0-395-19395-8",
"price": 22.99
}
],
"bicycle": {
"color": "red",
"price": 19.95
}
}
}