网站网站开发逻辑,企业邮箱查询系统,如何开设网站,网页赚钱游戏jsonpath只能解析本地文件 jsonpath的使用#xff1a; obj json.load(open(.json文件,r,encodingutf-8))place_name jsonpath.jsonpath(obj, json语法) 目录
1.安装jsonpath
2.Xpath和jsonpath的语法对比
练习#xff1a;使用jsonpath解析JSON文件
3.使用jsonpath抓取… jsonpath只能解析本地文件 jsonpath的使用 obj json.load(open(.json文件,r,encodingutf-8))place_name jsonpath.jsonpath(obj, json语法) 目录
1.安装jsonpath
2.Xpath和jsonpath的语法对比
练习使用jsonpath解析JSON文件
3.使用jsonpath抓取淘票票中的城市名称
参考 应用场景
打开检查中的网络当鼠标悬浮在“深圳”这个位置上时就会出现一个下拉列表我门点击左侧新出现的名称后从预览中可以看到与上面对应的所有的城市名称我们就可以用jsonpath把这些城市都爬下来。 1.安装jsonpath pip install jsonpath 2.Xpath和jsonpath的语法对比 练习使用jsonpath解析JSON文件
JSON文件
{ 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: {author: me,color: red,price: 19.95}}
}
练习代码
import json
import jsonpathobj json.load(open(_073.json, r, encodingutf-8))
# 所有的作者
book_author jsonpath.jsonpath(obj, $.store.book.*.author)
print(book_author)# 所有的作者
# author jsonpath.jsonpath(obj,$.store..author)
author jsonpath.jsonpath(obj,$..author)
print(author)# store下的所有元素
element jsonpath.jsonpath(obj,$.store.*)
print(element)# store里面所有的钱
price jsonpath.jsonpath(obj, $.store..price)
# price jsonpath.jsonpath(obj, $..price)
print(price)# 第三个书
book jsonpath.jsonpath(obj, $.store.book[2].title)
print(book)# 最后一本书
last_book jsonpath.jsonpath(obj, $.store.book[(.length-1)].title)
print(last_book)# 前两本书
first_book jsonpath.jsonpath(obj, $.store.book[:2].title)
print(first_book)# 过滤出所有包含编号的书
# 条件过滤需要在的前面添加一个“”
id_book jsonpath.jsonpath(obj, $..book[?(.isbn)])
print(id_book)# 哪本书超过了十块钱
top_price jsonpath.jsonpath(obj, $..book[?(.price10)])
print(top_price)
3.使用jsonpath抓取淘票票中的城市名称
获取我们所需要的JSON数据并保存为JSON格式。
这里需要注意的就是header的问题选择合适的请求头极为重要。
# 获取网页的源码
url https://dianying.taobao.com/cityAction.json?activityId_ksTS1699438000391_108jsoncallbackjsonp109actioncityActionn_snewevent_submit_doGetAllRegiontrue
headers {# 带 : 的请求头不好使User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0,Cokkie:cna78fBGrbzhCMCAXjATRbsaw5; te7c798fa12372a57ee31f10dfd51cd4e; cookie21d03be736b566af7ea39001ed7fa3c8f; v0; _tb_token_e3b433bbbe03e; xlly_s1; tfstkdmCXbdYCzmmjr9JtgSaPVwh_85d_8iNUlVTO-NhqWIdv55sN4q7V7sWWWGSuSrAVWhs143b2Ql4mWTscJKS1SrY9XGI6btyzTZbDsCEFfWPFovp26kRTr2yhoCATY4lTLW_cYs2DvGBZP7NTiaZSwbGUKa3xooujl_T8jHQjTfTPNEgMAZK7jlXwdX-QYtDsPpc6PHz7PADGFn8r6; lfBLfzOEPPRd-YECUBO5Bnurza77T5IRb41PzaNbMiIEGa6KCtFaihNCTsYuBSdtjgTCcBetrWDM-1dLHR3xg5c0c0KDtBa2K3xvtaQtJe; isgBKamDko1_3qxi6vekFBO7lel9xwoh-pB-d4dQ5BPeUmkE0Yt-BaVUc7taw-fvOJZ,Referer:https://dianying.taobao.com/index.htm?n_snew
}
# 请求对象定制
request urllib.request.Request(url, headersheaders)
# 模拟客户端向服务器发送请求
response urllib.request.urlopen(request)
# 获取网页源码
content response.read().decode(utf-8)
with open(_074.json,w,encodingutf-8) as file:file.write(content)
然后我们就开始解析JSON文件
保存之后我们可以看到前面有个json109()的头我们把这一部分删除就可以了。
或者对保存JSON文件前对content进行操作
content content.split(()[1].split())[0] 开始解析JSON文件。
import json
import jsonpath
obj json.load(open(_074.json,r,encodingutf-8))
place_name jsonpath.jsonpath(obj, $..regionName)
print(place_name)用好了JSON解析数据真的太方便了。
对比一下使用字典的方式提取name需要嵌套两层循环。
import json
obj json.load(open(_074.json,r,encodingutf-8))
name []
for key, value in obj[returnValue].items():temp obj[returnValue][key]for i in temp:name.append(i[regionName])
print(name) 参考
尚硅谷Python爬虫教程小白零基础速通含python基础爬虫案例