网站建设敬请期待图片素材,小蓝鸟加速器,大悟县建设局网站,ppt模板做的好的网站有哪些数据提取之JSON与JsonPATH
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式#xff0c;它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景#xff0c;比如网站前台与后台之间的数据交互。
JSON和XML的比较可谓不…数据提取之JSON与JsonPATH
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式它使得人们很容易的进行阅读和编写。同时也方便了机器进行解析和生成。适用于进行数据交互的场景比如网站前台与后台之间的数据交互。
JSON和XML的比较可谓不相上下。
Python 2.7中自带了JSON模块直接import json就可以使用了。
官方文档http://docs.python.org/library/json.html
Json在线解析网站http://www.json.cn/#
JSON
json简单说就是javascript中的对象和数组所以这两种结构就是对象和数组两种结构通过这两种结构可以表示各种复杂的结构 对象对象在js中表示为{ }括起来的内容数据结构为 { keyvalue, keyvalue, ... }的键值对的结构在面向对象的语言中key为对象的属性value为对应的属性值所以很容易理解取值方法为 对象.key 获取属性值这个属性值的类型可以是数字、字符串、数组、对象这几种。数组数组在js中是中括号[ ]括起来的内容数据结构为 [Python, javascript, C, ...]取值方式和所有语言中一样使用索引获取字段值的类型可以是 数字、字符串、数组、对象几种。 import json
json模块提供了四个功能dumps、dump、loads、load用于字符串 和 python数据类型间进行转换。
1. json.loads()
作用把json格式的字符串转为Python数据类型
# json_loads.pyimport jsonstrList [1, 2, 3, 4]strDict {city: 北京, name: 大猫}json.loads(strList)
# [1, 2, 3, 4]json.loads(strDict) # json数据自动按Unicode存储
# {ucity: u\u5317\u4eac, uname: u\u5927\u732b}2. json.dumps()
把 python 类型 转为 json 类型
import json# json.dumps()之前
item {name:QQ,app_id:1}
print(before dumps,type(item)) # dict
# json.dumps之后
item json.dumps(item)
print(after dumps,type(item)) # str3. json.dump()
把python数据类型转为 json格式的字符串
注意一般让你把抓取的数据保存为json文件时使用
# 示例1
import jsonitem {name:QQ,app_id:1}
with open(小米.json,a) as f:json.dump(item,f,ensure_asciiFalse)# 示例2
import jsonitem_list []
for i in range(3):item {name:QQ,id:i}item_list.append(item)with open(xiaomi.json,a) as f:json.dump(item_list,f,ensure_asciiFalse)4. json.load()
将json文件读取,并转为python类型
import jsonwith open(D:\\spider_test\\xiaomi.json,r) as f:data json.load(f)print(data)json模块总结
# 爬虫最常用
1、数据抓取 - json.loads(html)将响应内容由: json 转为 python
2、数据保存 - json.dump(item_list,f,ensure_asciiFalse)将抓取的数据保存到本地 json文件# 抓取数据一般处理方式
1、txt文件
2、csv文件
3、json文件
4、MySQL数据库
5、MongoDB数据库
6、Redis数据库JsonPath了解
JsonPath 是一种信息抽取类库是从JSON文档中抽取指定信息的工具提供多种语言实现版本包括Javascript, Python PHP 和 Java。
JsonPath 对于 JSON 来说相当于 XPATH 对于 XML。 下载地址https://pypi.python.org/pypi/jsonpath 安装方法点击Download URL链接下载jsonpath解压之后执行python setup.py install 官方文档http://goessner.net/articles/JsonPath JsonPath与XPath语法对比
Json结构清晰可读性高复杂度低非常容易匹配下表中对应了XPath的用法。
XPathJSONPath描述/$根节点.现行节点/.or[]取子节点..n/a取父节点Jsonpath未支持//..就是不管位置选择所有符合条件的条件**匹配所有元素节点n/a根据属性访问Json不支持因为Json是个Key-value递归结构不需要。[][]迭代器标示可以在里边做简单的迭代操作如数组下标根据内容选值等|[,]支持迭代器中做多选。[]?()支持过滤操作.n/a()支持表达式计算()n/a分组JsonPath不支持
示例
我们以拉勾网城市JSON文件 http://www.lagou.com/lbs/getAllCitySearchLabels.json 为例获取所有城市。
# jsonpath_lagou.pyimport requests
import jsonpath
import json
import chardeturl http://www.lagou.com/lbs/getAllCitySearchLabels.json
response equests.get(url)
html response.text# 把json格式字符串转换成python对象
jsonobj json.loads(html)# 从根节点开始匹配name节点
citylist jsonpath.jsonpath(jsonobj,$..name)print (citylist)
print (type(citylist))
fp open(city.json,w)content json.dumps(citylist, ensure_asciiFalse)
print (content)fp.write(content.encode(utf-8))
fp.close()