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