爬虫数据提取 -jsonpath

介绍

对于爬虫数据采集而言,除了直接解析html,还经常解析json格式数据,而JsonPath 是一种信息抽取类库,可以从json文档中抽取指定信息,JsonPath对于json来说就相当于xpath 对于xml。

1、安装插件

执行命令pip3 install jsonpath即可

D:\3.dev\pyworkspace\scraw\test01>pip3 install jsonpath
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting jsonpath
...

2、JsonPath使用

先找一个可以返回json格式数据的异步接口
在这里插入图片描述
提取书籍id和书籍名称,$表示根节点,..表示匹配所有符合条件的条件,这里通过$..bookId匹配所有的书籍id,$..bookName匹配所有的书籍名称

from fake_useragent import UserAgent
import requests
from jsonpath import jsonpath

url = 'http://book.zongheng.com/api/rank/getZongHengMonthTicketRankList.htm?rankType=1&pageNum=1&pageSize=10'
headers = {"User-Agent": UserAgent().chrome}
resp = requests.get(url, headers=headers)
# 提取书籍id
bookIds = jsonpath(resp.json(), '$..bookId')
# 提取书籍名称
bookNames = jsonpath(resp.json(), '$..bookName')
# 输出key-value
for bookId, bookName in zip(bookIds, bookNames):
    print(bookId, ":", bookName)

执行结果

1013348 : 渡劫之王
907701 : 剑仙在此
966275 : 不让江山
985268 : 我只有两千五百岁
672340 : 剑来
1005752 : 陆地键仙
899865 : 天泉圣子
932153 : 边月满西山
1002390 : 超级雷修
926696 : 赘婿出山

3、常见表达式

表达式说明
$根节点
@现行节点
.or[]取子节点
就是不管位置,选择所有符合条件的条件
*匹配所有元素节点
[]迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等
?()支持过滤操作
()支持表达式计算
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值