爬虫-JSONPath
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 |