json、xpath数据的快捷检阅方法,使用jsonpath将拉钩的json数据提取某一个并且保存到本地(保存有两种方法)的实战

JSONPath 表达式始终以与 XPath 表达式与 XML 文档结合使用的相同方式引用 JSON 结构

红线为常用的json路径和xpath写法对照

json、xpath数据的快捷检阅方法,使用jsonpath将拉钩的json数据提取某一个并且保存到本地(保存有两种方法)的实战_第1张图片- 递归下降:不管前面有什么,只要找到他就可以

JSONPath 示例

json、xpath数据的快捷检阅方法,使用jsonpath将拉钩的json数据提取某一个并且保存到本地(保存有两种方法)的实战_第2张图片
json、xpath数据的快捷检阅方法,使用jsonpath将拉钩的json数据提取某一个并且保存到本地(保存有两种方法)的实战_第3张图片

实战:将拉钩的json数据提取某一个并且保存到本地

注意点

  • 一定要加请求头,能带上代理参数就带上代理参数(反反爬虫)
    快代理网址(https://www.kuaidaili.com/free/inha/2/)
  • 字符串不能直接使用jsonpath进行解析,dict字典是可以的,
  • 方法1:使用json.load将得到的结果转成dict字典再传参可以实现(列表也可以这样操作)
  • 方法2:使用json方法直接将res转换成dict,但必须是xx.json才可以使用
  • 对文件对象的操作 使用json.dump将dict字典格式文件直接写入到文件
import requests
import  jsonpath
# 导入一个自己的请求头headers包(如果没有就注释掉这一行,自己找请求头)
from user_agent import headers
import json

def lagou():
    url = 'https://www.lagou.com/lbs/getAllCitySearchLabels.json'
    proxies = {
        'http':'39.103.175.42:3128'
    }

    # 方法1:将json_str转换为python的数据类型 调用jsonpath解析
    # 使用代理发送请求得到结果
    # 使用代理porxies参数(也可以不用,不用的时候不写入这个参数即可)
    res = requests.get(url,headers=headers,proxies=proxies).content.decode()
    # print(res)

    # 字符串不能直接使用jsonpath进行解析,dict字典是可以的
    # print(jsonpath.jsonpath(res,'$..name'))  # False

    
    # 使用json.load将得到的结果转成dict字典再传参可以实现(列表也可以这样操作)
    py_dict = json.loads(res)
    # 提取出地区
    period_data = jsonpath.jsonpath(py_dict,'$..name')
    # print(jsonpath.jsonpath(py1_dict,'$..name'))
    # print(type(py1_dict))
    print(type(period_data))

    # 对文件对象的操作 使用json.dump将dict字典格式文件直接写入到文件
    with open('第六天/json_work_p.json','w',encoding='utf-8') as f:
        json.dump(py_dict,f,ensure_ascii=False)

    # 方法2:使用json方法直接将res转换成dict,但必须是xx.json才可以使用
    # res = requests.get(url,headers=headers,proxies=proxies)
    # py_dict1 = res.json()
    # # print(jsonpath.jsonpath(py_dict1,'$..name'))
    # period1_data = jsonpath.jsonpath(py_dict1,'$..name')
    # print(type(period_data))  # list文件



lagou()

你可能感兴趣的:(爬虫,爬虫,python)