火车采集器V10版Json功能介绍
火车采集器以往发布的版本已经添加了提取json功能,但是该json功能只支持提取原始值(即不嵌套其他json数据的键值对),不支持提取任意位置的json功能,因此我们在V10.28及以上版本中添加了自定义编写json表达式来获取任意位置键值对的功能,下面介绍具体用法:
一.基础用法
基础用法不变,可以参考这个教程使用:点击打开链接
二.扩展用法
示例网址:https://interface.sina.cn/pc_api/public_news_data.d.json?callback=jQuery111209109273786274386_1745312922961&cre=tianyi&mod=pcmil&statics=1&cids=57922&merge=5&length=15&up=4&down=0&tm=1745312933&action=1&top_id=&offset=0&type=std_news%2Cstd_slide%2Cstd_video&editLevel=99&pageSize=20&cTime=1672502400&referrer=https%3A%2F%2Fwww.sina.com.cn%2F&_=1745312922966
源码为:
这个网址不是一直有效若是失效了,可以选择其他json内容的网址作为练手,所有json网址的json表达式写法一样的。下面介绍具体写法
1.处理内容为标准json格式(非必要)
有的HTTP地址的源码非标准的json,有其他干扰的字符,所以可以用关联区域的方式来截取出json,若是HTTP地址的源码格式标准,可省略这步
2.比如下图中要提取tags中的所有值,若是在之前的json功能中是无法获取的,因为tags不是原始值(tag中还嵌套了其他json数据),在新版本功能中就可以通过自行编写json表达式来获取
若是json编写不熟练的话,可将json数据放入json工具中,然后选中一个原始值作为编写json的参考。
在采集器中的json用 $. 开头,然后用 . 连接不同的节点,* 表示通配多条数据
这个是json工具分析的jsonpath: data[0][tags][0]
但是这个值最终提取的是tags下的第[0] 行的值,我们要获取的是tags下的所有值,所以要删掉最后的[0],并用 . 连接不同键,并删掉 键的[]
最终的结果是,$.data[*].tags ,然后再勾选循环匹配,即可得到结果:
再举一个例子:
比如我们要获取的thumb下面的所有图片,最终写法是 $.data[*].thumbs
上面是通过具体实例来学习json表达式的写法,并没有讲解jsonpath的具体原理,如果想要学习jsonpath的详细原理,可以自行搜索详细教程学习