python--爬虫之JSON于JsonPath

JSON

json的引入

在python中json作为一个内建库不需要额外安装,只需要使用import json执行引入

json模块的功能

在python中json模块提供了四个功能:dumpsdumploadsload

  • json.loads()
    将json格式字符串编码转换为python对象。
  • json.dumps()
    把一个Python对象编码转换成Json字符串,json.dumps() 序列化时默认使用的ascii编码,如果想获取utf-8格式可以使用json.dumps(str, ensure_ascii=False)
  • json.dump()
    将Python内置类型序列化为json对象后写入文件json.dump(list, open("list.json","w"), ensure_ascii=False)
  • json.load()
    读取文件中json形式的字符串元素 转化成python类型json.load(open("list.json"))

JsonPath

JsonPath的引入

首先使用pip安装pip install jsonpath,然后引入import jsonpath

JsonPath的使用

表达式 描述
$ 根节点
@ 现行节点
.or[] 取子节点
.. 不管位置,选择所有符合条件的对象
* 匹配所有元素节点
[] 迭代器标示(可以在里边做简单的迭代操作,如数组下标,根据内容选值等)
[,] 支持迭代器中做多选。
?() 支持过滤操作.
() 支持表达式计算

实例

from urllib.request import *
import jsonpath
import json

url = 'http://www.lagou.com/lbs/getAllCitySearchLabels.json'
header = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36"}
request = Request(url, headers=header)
response = urlopen(request)
html = response.read()

obj = json.loads(html)
cityList = jsonpath.jsonpath(obj, '$..name')

print(cityList)
posted @ 2019-02-21 12:27  Leur  阅读(689)  评论(0编辑  收藏  举报