python学习 Day46 数据存储-JSON文件存储10

JSON文件存储

一、概述

  • JSON:JavaScript Object Notation,是一种轻量级的数据交换格式,它是基于ECMAScript的一个子集
  • JSON采用完全独立于语言的文本格式
  • JSON在Python中分别有list和dict组成

二、Python中的json模块

函数 描述
json.dumps() 实现Python类型转化为json字符串,返回一个str对象,把一个Python对象编码转换成json字符串
json.loads() 把JSON格式字符串解码转换成Python对象,从json到python的类型转化
json.dump() 将python内置型序列转化为json对象后写入文件
json.load() 读取文件中json形式的字符串传化为python类型

基本使用

import json
s = '{"name":"张三"}' #JSON数据格式,键值对的形式 注意其中的引号必须为双引号
obj = json.loads(s)  #将JSON字符串转为python对象(字典类型)
print(type(obj))
print(obj)

#将python对象转换成str(字符串)类型
ss = json.dumps(obj,ensure_ascii=False) #后一个参数将“\u5f20\u4e09”转换成对应的中文
print(type(ss)) #<class 'str'>
print(ss)

#将python对象(dict)保存到文件中
json.dump(obj,open('movie.txt','w',encoding='utf-8'),ensure_ascii=False)

#读取文件中的内容
obj2 = json.load(open('movie.txt',encoding='utf-8'))
print('从文件中读取:',obj2)
print(type(obj2))
<class 'dict'>
{
    
    'name': '张三'}
<class 'str'>
{
    
    "name": "张三"}
从文件中读取: {
    
    'name': '张三'}
<class 'dict'>

Process finished with exit code 0

创建的文件对象
在这里插入图片描述


三、案例

数据来源的获取
在这里插入图片描述
将headers中获得的URL键入浏览器打开
在这里插入图片描述
将其数据复制到json在线编辑器中,删除开头和结尾不符合JSON数据规范的字符
在这里插入图片描述


具体实现代码

import requests
import json

def send_requests():
    url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=1504280&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
    headers = {
    
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36'}
    resp =requests.get(url,headers=headers)  #发送请求
    return resp.text  #返回数据


def parse_json(data):
    #数据整理,去掉数据开头和结尾不符合JSON数据的格式
    return data.replace('fetchJSON_comment98(','').replace(');','') #结果为str类型

def type_change(data):
    #类型转换:str-->python字典类型
    return json.loads(data)

def save_data(obj):
    #存储数据
    json.dump(obj,open('京东销量最好的粽子数据.txt','w',encoding='utf-8'),ensure_ascii=False)

def start():
    #启动爬虫程序
    data = send_requests()
    s = parse_json(data)
    #print(type(type_change(s))) #验证类型是否转换成功
    save_data(data)

if __name__ == '__main__':
    start()

运行程序后最终获取到的京东销量最好的粽子数据
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ShengXIABai/article/details/115918616
今日推荐