使用jsonpath快速提取json的数据
1.使用urllib爬取百度搜索html2.urllib.request.Request对象封装请求3.urllib发送get请求_中文传参问题4.urllib发送post请求获取html源代码5.获取动态页面html6.忽略SSL证书验证7.使用fake-useragent库伪装请求头8.urllib自定义opener对象设置代理IP9.爬虫cookie的使用10.保存与读取cookie11.使用urllib.error进行请求异常处理12.使用requests库发送get和post请求13.使用Request伪装User-Agent和IP地址14.requests设置超时时间/requests.Session自动保存cookie/verify忽略ssl证书15.re模块的正则表达式规则16.使用re的正则表达式提取腾讯体育新闻摘要17.BeautifulSoup4解析数据18.bs4.find_all()搜索文档树和css选择器提取解析后的html数据19.bs4解析并提取人民网新闻标题数据20.xpath解析数据21.谷歌浏览器的xpath插件安装22.使用re和lxml的xpath功能提取纵横中文网小说推荐榜前3页标题23.JSON数据
24.使用jsonpath快速提取json的数据
25.提取猫眼电影正在热映电影以及评分26.单线程与多线程爬虫jsonpath对于json相当于xpath对于xml,jsonpath提供多种语言实现版本包括python,javascript,php和java等,jsonpath是第三方库,需要安装,cmd中输入pip install jsonpath
安装后输入pip show jsonpath
可查看详细信息(官网https://goessner.net/articles/JsonPath/
)
Name: jsonpath
Version: 0.82.2
Summary: An XPath for JSON
Home-page: http://www.ultimate.com/phil/python/#jsonpath
Author: Phil Budne
Author-email: phil@ultimate.com
License: MIT
Location: C:\Users\89660\AppData\Local\Programs\Python\Python312\Lib\site-packages
Requires:
Required-by:
jsonpath使用非常简单,jsonpath.jsonpath(expr)是jsonpath库的核心函数,用于执行jsonpath表达式:
纵横中文网推荐榜的数据就是以json文件保存,由上节(22)得知页面数据得请求方法为post。
向使用urllib获取json源代码,再使用jsonpath提取第一页json文件的小说名与作者信息,运行代码如下:
from urllib.request import Request, urlopen
from urllib.parse import urlencode
from fake_useragent import UserAgent
from jsonpath import jsonpath
import json
# 请求地址
url = 'https://www.zongheng.com/api/rank/details'
# 伪装请求头
headers = {'User-Agent': UserAgent().chrome}
# 封装post参数
data = {
'cateFineId': '0',
'cateType': '0',
'pageNum': '1',
'pageSize': '20',
'period': '0',
'rankType': '6'
}
data = urlencode(data).encode()
# 封装Request对象
req = Request(url, data=data, headers=headers)
# 发送请求
resp = urlopen(req)
# 获取响应内容
print(resp.read().decode())
# 把json格式字符串转换为python对象(解码/反序列)
obj = json.loads(resp.read().decode())
# 匹配bookName节点和pseudonym节点
bookName = jsonpath(obj, '$..bookName')
pseudonym = jsonpath(obj, '$..pseudonym')
print(type(bookName), type(pseudonym))
for i, n in zip(bookName, pseudonym):
print(f'作者: {n}, 书名: {i}')
print(bookName)
运行结果:
<class 'list'> <class 'list'>
作者: 随散飘风, 书名: 踏星
作者: 火星引力, 书名: 逆天邪神
作者: 烽火戏诸侯, 书名: 剑来
作者: 知白, 书名: 天下长宁
作者: 更俗, 书名: 新官路商途
作者: 青鸾峰上, 书名: 无敌天命
作者: 减肥专家, 书名: 星辰之主
作者: 无罪, 书名: 割鹿记
作者: 我爱小豆, 书名: 灰烬领主
作者: 铁马飞桥, 书名: 太荒吞天诀
作者: 鸟川鸣, 书名: 好戏登场
作者: 沙漠, 书名: 绝色生骄
作者: 烈焰滔滔, 书名: 最强战神
作者: 晨星天使, 书名: 问鼎:从一等功臣到权力巅峰
作者: 莫问江湖, 书名: 过河卒
作者: 曳光, 书名: 凡徒
作者: 浪迹天涯觅卿归, 书名: 弑神仙尊
作者: 太极阴阳鱼, 书名: 末日崛起
作者: 烟斗老哥, 书名: 医路青云
作者: 六如和尚, 书名: 陆地键仙
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?