爬虫 - JSONPath
JSONPath 简介
- JSONPath:是 xpath 在 json 的应用,是用来解析 json 数据使用的
- XML 的一个经常强调的优点是可以使用大量工具来分析、转换和有选择地从 XML 文档中提取数据。XPath 是这些功能强大的工具之一。它可以解决以下问题:
- 可以在客户端上以交互方式找到数据并从 JSON 结构中提取数据,而无需使用特殊脚本。
- 可以将客户端请求的 JSON 数据简化为服务器上的相关部分,从而最大程度地减少服务器响应的带宽使用量。
Python 处理 json 格式用到的函数
1 | import json 导包 |
1 | import json |
前端处理
1 | # 将json格式字符串转化为js对象 |
安装
1 | pip install lxml |
参考链接
jsonpath 和 xpath 的对比
XPath | JSONPath | Description |
---|---|---|
/ | $ | 表示根对象 / 元素 |
. | @ | 当前对象 / 元素 |
/ | . or [] | 子元素 |
.. | n/a | 父元素 |
// | .. | 任意位置查找 |
* | * | 通配符,表示所有的对象 / 元素 |
@ | n/a | 属性访问字符 |
[] | [] | 子元素操作符 |
| | [,] | 连接操作符在 XPath 结果合并其它结点集合。JSONP 允许 name 或者数组索引。 |
[] | ?() | 应用过滤器(脚本)表达式。 |
n/a | () | 脚本表达式,使用在脚本引擎下面。 |
() | n/a | Xpath 分组 |
XPath 提供的功能(此处没有缩写的语法,运算符和函数的位置路径)比此处列出的要多得多。此外,下标运算符在 Xpath 和 JSONPath 中的工作方式存在显着差异。
- XPath 索引始终以 1 开始。
- JSONPath 索引始终以 0 开头。
示例 1:测试
1 | import json |
1 | { |
XPath | JSONPath | 结果 |
---|---|---|
/store/book/author |
$.store.book[*].author |
商店中所有书籍的作者 |
//author |
$..author |
所有作者 |
/store/* |
$.store.* |
商店里所有的东西,包括一些书和一辆红色的自行车。 |
/store//price |
$.store..price |
商店中所有商品的价格。 |
//book[3] |
$..book[2] |
第三本书 |
//book[last()] |
$..book[(@.length-1)] $..book[-1:] |
最后一本书。 |
//book[position()<3] |
$..book[0,1] $..book[:2] |
前两本书 |
//book[isbn] |
$..book[?(@.isbn)] |
过滤所有具有 isbn 编号的书 |
//book[price<10] |
$..book[?(@.price<10)] |
筛选所有价格低于 10 的书籍 |
//* |
$..* |
XML 文档中的所有元素。JSON 结构的所有成员。 |
示例 2:淘宝评论爬取
1 | import urllib.request |