营销型网站制作建设,软件开发工具排行榜,自建平台,2017年网站设计一、JSON文件存储
JSON#xff0c;全称为 JavaScript 0bject Notation,也就是JavaSript 对象标记#xff0c;它通过对象和数组的组合来表示数据#xff0c;构造简洁但是结构化程度非常高#xff0c;是一种轻量级的数据交换格式。本节中#xff0c;我们就来了解如何利用 P…一、JSON文件存储
JSON全称为 JavaScript 0bject Notation,也就是JavaSript 对象标记它通过对象和数组的组合来表示数据构造简洁但是结构化程度非常高是一种轻量级的数据交换格式。本节中我们就来了解如何利用 Python 保存数据到SON 文件中。
一对象和数组
在avaScript 语言中一切都是对象。因此任何支持的类型都可以通过SON 来表示例如如字串、数字、对象、数组等但是对象和数组是比较特殊且常用的两种类型下面简要介绍一下它们。
对象:
它在JavaScript 中是使用花括号 包裹起来的内容数据结构为{key1: value1,key2: value2,.}的键值对结构。在面向对象的语言中key 为对象的属性value 为对应的值键名可以使用整数和字符串来表示。值的类型可以是任意类型。
数组:
数组在JavaScript 中是方括号包裹起来的内容数据结构为[JavaJavaScript“vb”...] 的索引结构在Javascript 中数组是一种比较特殊的数据类型它也可以像对象那样使用键值对但还是索引用得多。同样值的类型可以是任意类型。
所以一个JSON 对象可以写为如下形式:
[{name: 张三,age: 24,birthday: 1999-07-12},{name: 李四,age: 26,birthday: 1999-08-12}
]
由中括号包围的就相当于列表类型列表中的每个元素可以是任意类型这个示例中它是字典类型由大括号包围。 JSON 可以由以上两种形式自由组合而成可以无限次嵌套结构清晰是数据交换的极佳方式。
二数据写入规范
可以看到中文字符都变成了 Unicode 字符这并不是我们想要的结果。
为了输出中文还需要指定参数 ensure_ascii 为 False另外还要规定文件输出的编码:
import jsondate [{name:李绍幸,age:24,birthday:1999-07-12
}]
# w写 r读 a追加
with open(D:\桌面\date.json,w,encodingutf-8) as file:# dumps通常是指json.dumps方法它来源于内置的json模块。# 该方法用于将Python对象序列化为JSON格式的字符串。# 序列化是指将数据结构或对象状态转换成可存储或传输的格式的过程。#indent指定缩进级别为2# ensure_ascii: 默认为 True# 意味着所有非ASCII字符都会被转义成 \uXXXX 序列。如果设置为 False这些字符将原样输出。file.write(json.dumps(date,indent2,ensure_asciiFalse))
二、CSV文件存储 CSV全称为(Comma-Separated Values中文可以叫作逗号分隔值或字符分隔值其文件以纯文本形式存储表格数据。该文件是一个字符序列可以由任意教目的记录组成记录间以某种换行符分隔。每条记录由字段组成字段间的分隔符是其他字符或字符串最常见的是逗号或制表符。不过所有记录都有完全相同的字段序列相当于一个结构化表的纯文本形式它比 Excel 文件更加简洁XLS 文本是电子表格它包含了文本、数值、公式和格式等内容而 CSV 中不包合这些内容就是特定字符分的纯文本结构简单清晰。所以有时候用 CSV 来保存数据是比较方便的。本节中我们来进解 Pvthon 读取和写入CSV 文件的过程。
一写入
简单例子
import csv# 以列表形式写入
with open(data.csv, w) as csvfile:writer csv.writer(csvfile)writer.writerow([id, name, age])writer.writerow([10001,Mike,20])writer.writerow([10002,Bob,22])writer.writerow([10003,Jordan,21])import pandas
dic {1:张三,2:李四,3:王五}
df pd.DataFrame(dic)
df.to_csv(demo.csv,indexNone) 首先打开 data.csv 文件然后指定打开的模式为 w (即写入)获得文件句柄随后调用 csv 库的 writer 方法初始化写入对象传入该句柄然后调用 writerow 方法传入每行的数据即可完成写入。
如果想修改列与列之间的分隔符可以传入 delimiter 参数其代码如下:
import csv# 以列表形式写入
with open(data.csv, w) as csvfile:writer csv.writer(csvfiledelimiter)writer.writerow([id, name, age])writer.writerow([10001,Mike,20])writer.writerow([10002,Bob,22])writer.writerow([10003,Jordan,21])
二多行写入
调用 writerows 方法同时写入多行此时参数就需要为二维列表例如:
import csv# 以列表形式写入
with open(data.csv, w) as csvfile:writer csv.writer(csvfiledelimiter)writer.writerow([id, name, age])writer.writerows([[10001,Mike,20],[10002,Bob,22],[10003,Jordan,21]])三字典写入
用字典来表示。在 csv 库中也提供了字典的写入方式示例如下:
import csv
with open(data.csv,w) as csvfile:fieldnames [id,name,age]# 定义一个列表 fieldnames其中包含我们希望出现在 CSV 文件第一行的字段名# 它们作为列标题。writer csv.DictWriter(csvfile,fieldnamesfieldnames)# 调用 writer.writeheader() 方法写入列标题。# 这会基于 fieldnames 列表中的字段名在 CSV 文件中创建第一行writer.writeheader ()writer.writerow({id: 10001,name:Mike,age: 203})writer.writerow({id: 10002,name:Bob,age : 22})writer.writerow({id:10003,name:jordan,age: 21})
这段代码执行完成后将会在当前目录下创建或覆盖一个名为 data.csv 的文件内容如下
id,name,age
10001,Mike,20
10002,Bob,22
10003,Jordan,21
四excel写入
from openpyxl import Workbook
import random
数据写入格式
列表嵌套列表 数据按列表的行写入第一列表示第一行第二列表示第二行[[],[],[]]#空白文件
wb Workbook()
# 空白页 内容插入工作簿中索引为 0 的位置
ws wb.create_sheet(第一页,index0)
ws.append([编号,姓名,年龄])
for i in range(10):id str(i)name str(li str(i))age random.randint(18,30)ws.append([id,name,age])
wb.save(li.xlsx)
五爬虫采集入库
import httpx
import csv
res httpx.get(https://careers.tencent.com/tencentcareer/api/post/Query?timestamp1702977319532countryIdcityIdbgIdsproductIdcategoryIdparentCategoryIdattrIdkeywordpythonpageIndex2pageSize10languagezh-cnareacn)# 将数据变成字典格式
items res.json()data []
# 或者data list()
item items.get(Data)[Posts]#列表形式
for i in item:title i.get(RecruitPostName)time i.get(LastUpdateTime)data.append([title,time])
print(data)with open(date.csv,w,encodinggbk)as csvfile:writer csv.writer(csvfile,delimiter,)writer.writerow([title,time])writer.writerows(data)print(写入成功)
三 关系型数据库
关系型数据库是基于关系模型的数据库而关系模型是通过二维表来保存的所以它的存储方式就是行列组成的表每一列是一个字段每一行是一条记录。表可以看作某个实体的集合而实体之间存在联系这就需要表与表之间的关联关系来体现如主键外键的关联关系。多个表组成一个数据库也就是关系型数据库。
关系型数据库有多种如 SQLite、MySQL、Oracle、SQL Server、DB2等.
一安装数据库使其正常运行并安装pymysql第三方库
二连接数据库
这里首先尝试连接一下数据库。假设当前的 MVSQL运行在本地用户名为 root密码为 123456运行端口为 3306这里利用PyMySQL 先连接 MySQL然后创建一个新的数据库名字叫作 spiders代码如下:
import pymysql
db pymysql.connect(hostlocalhost,userroot,password123456,port3306)
cursor db.cursor()
cursor.execute(select version())
# 使用fetchone获取SQL语句执行结果的第一行数据
data cursor.fetchone()
print(database version:,data)
cursor.execute(create database if not exists spiders default character set utf8)
cursor.execute(use spiders)
sql CREATE TABLE If NOT EXISTS students(id VARCHAR(255)NOT NULL,NAME VARCHAR(255)NOT NULL,age INT NOT NULL,PRIMARY KEY(id))
cursor.execute(sql)
db.close()
三创建数据表
import pymysql
db pymysql.connect(hostlocalhost,userroot,password123456,port3306)
cursor db.cursor()
cursor.execute(create database if not exists spiders default character set utf8)
cursor.execute(use spiders)
sql CREATE TABLE If NOT EXISTS students(id VARCHAR(255)NOT NULL,NAME VARCHAR(255)NOT NULL,age INT NOT NULL,PRIMARY KEY(id))
cursor.execute(sql)
db.close()
四插入数据
插入、更新和删除操作都是对数据库进行更改的操作而更改操作都必须为一个事务所以这些操作的标准写法就是
具体的参照mysql第14天之TCL事务控制语言-CSDN博客
import pymysql
id 1
user lili
age 20
# 连接数据库
db pymysql.connect(hostlocalhost,userroot,password123456,port3306)
cursor db.cursor()
sql INSERT INTO students VALUES(%s,%s,%s)try:cursor.execute(sql,(id,user,age))# 提交db.commit()
except:# 回滚db.rollback()
db.close()
五字典数据插入
import pymysql
data {id:20220315,name:菲菲,age:20}
db pymysql.connect(hostlocalhost, userroot, password123456, port3306, dbspiders)
cursor db.cursor()
keys ,.join(data.keys())
values ,.join([%s])*len(data)
sql INSERT INTO students({keys}) VALUES({values}).format(keyskeys,valuesvalues)
try:if cursor.execute(sql,tuple(data.values())):print(Successful!)db.commit()
except:print(Failed)db.rollback()
db.close()
四 Elasticsearch搜索引擎存储
Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文博索引擎基RESTful web接口Elasticsearch是用Java语言开发的并作为Apache许可条款下的开放源码发布是一种流行的企业级搜索引擎。Elasticsearch用于云计算中能够达到实时搜索稳定可靠快速安装使用方便。
重要特性
分布式的实时文件存储每个字段都被索引并可被搜索
实时分析的分布式搜索引擎
可以扩展到上百台服务器处理PB级别结构化或非结构化数据
基本概念
索引indlices-----------database数据库
类型type----------------Table表
文档Document---------Row行
字段Field-----------------Columns列
要注意的是:Elastiearch 本身就是分布式的因此便你只有一个节点Elasticsearch 认也会对你的教据进行分片和副本操作当你向集群添加新数据时数据也会在新加入的节点中进行平衡。
一安装服务端
地址https://www.elastic.co/cn/downloads/past-releases#elasticsearch 文章转载自: http://www.morning.mjats.com.gov.cn.mjats.com http://www.morning.jwfkk.cn.gov.cn.jwfkk.cn http://www.morning.kbfzp.cn.gov.cn.kbfzp.cn http://www.morning.lbssg.cn.gov.cn.lbssg.cn http://www.morning.srmdr.cn.gov.cn.srmdr.cn http://www.morning.zpjhh.cn.gov.cn.zpjhh.cn http://www.morning.rrwgh.cn.gov.cn.rrwgh.cn http://www.morning.kjgdm.cn.gov.cn.kjgdm.cn http://www.morning.xinxianzhi005.com.gov.cn.xinxianzhi005.com http://www.morning.rkkpr.cn.gov.cn.rkkpr.cn http://www.morning.mqss.cn.gov.cn.mqss.cn http://www.morning.bmssj.cn.gov.cn.bmssj.cn http://www.morning.rjnx.cn.gov.cn.rjnx.cn http://www.morning.ylrxd.cn.gov.cn.ylrxd.cn http://www.morning.bxfy.cn.gov.cn.bxfy.cn http://www.morning.jybj.cn.gov.cn.jybj.cn http://www.morning.datadragon-auh.cn.gov.cn.datadragon-auh.cn http://www.morning.hpmzs.cn.gov.cn.hpmzs.cn http://www.morning.hqpyt.cn.gov.cn.hqpyt.cn http://www.morning.tzrmp.cn.gov.cn.tzrmp.cn http://www.morning.lwmzp.cn.gov.cn.lwmzp.cn http://www.morning.bpmdz.cn.gov.cn.bpmdz.cn http://www.morning.fpqsd.cn.gov.cn.fpqsd.cn http://www.morning.znnsk.cn.gov.cn.znnsk.cn http://www.morning.bhjyh.cn.gov.cn.bhjyh.cn http://www.morning.cpnlq.cn.gov.cn.cpnlq.cn http://www.morning.dmzmy.cn.gov.cn.dmzmy.cn http://www.morning.nfsrs.cn.gov.cn.nfsrs.cn http://www.morning.hmmtx.cn.gov.cn.hmmtx.cn http://www.morning.fengnue.com.gov.cn.fengnue.com http://www.morning.fnczn.cn.gov.cn.fnczn.cn http://www.morning.fwrr.cn.gov.cn.fwrr.cn http://www.morning.tzzkm.cn.gov.cn.tzzkm.cn http://www.morning.ylklr.cn.gov.cn.ylklr.cn http://www.morning.wskn.cn.gov.cn.wskn.cn http://www.morning.yskhj.cn.gov.cn.yskhj.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.dxrbp.cn.gov.cn.dxrbp.cn http://www.morning.gwsfq.cn.gov.cn.gwsfq.cn http://www.morning.pbwcq.cn.gov.cn.pbwcq.cn http://www.morning.qwbht.cn.gov.cn.qwbht.cn http://www.morning.ljbm.cn.gov.cn.ljbm.cn http://www.morning.qnzgr.cn.gov.cn.qnzgr.cn http://www.morning.rycd.cn.gov.cn.rycd.cn http://www.morning.mgkb.cn.gov.cn.mgkb.cn http://www.morning.nqrlz.cn.gov.cn.nqrlz.cn http://www.morning.xmxbm.cn.gov.cn.xmxbm.cn http://www.morning.tcpnp.cn.gov.cn.tcpnp.cn http://www.morning.rtzd.cn.gov.cn.rtzd.cn http://www.morning.btcgq.cn.gov.cn.btcgq.cn http://www.morning.lnckq.cn.gov.cn.lnckq.cn http://www.morning.mcjyair.com.gov.cn.mcjyair.com http://www.morning.hzqjgas.com.gov.cn.hzqjgas.com http://www.morning.czxrg.cn.gov.cn.czxrg.cn http://www.morning.yzsdp.cn.gov.cn.yzsdp.cn http://www.morning.nxbsq.cn.gov.cn.nxbsq.cn http://www.morning.rlrxh.cn.gov.cn.rlrxh.cn http://www.morning.wqfzx.cn.gov.cn.wqfzx.cn http://www.morning.jftl.cn.gov.cn.jftl.cn http://www.morning.pqkrh.cn.gov.cn.pqkrh.cn http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn http://www.morning.cgbgc.cn.gov.cn.cgbgc.cn http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn http://www.morning.ymhjb.cn.gov.cn.ymhjb.cn http://www.morning.slkqd.cn.gov.cn.slkqd.cn http://www.morning.bfbl.cn.gov.cn.bfbl.cn http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn http://www.morning.rxhs.cn.gov.cn.rxhs.cn http://www.morning.knpbr.cn.gov.cn.knpbr.cn http://www.morning.wcjk.cn.gov.cn.wcjk.cn http://www.morning.bxch.cn.gov.cn.bxch.cn http://www.morning.wjjxr.cn.gov.cn.wjjxr.cn http://www.morning.kjtdy.cn.gov.cn.kjtdy.cn http://www.morning.drqrl.cn.gov.cn.drqrl.cn http://www.morning.stlgg.cn.gov.cn.stlgg.cn http://www.morning.rkzb.cn.gov.cn.rkzb.cn http://www.morning.bljcb.cn.gov.cn.bljcb.cn http://www.morning.krtky.cn.gov.cn.krtky.cn http://www.morning.dwmtk.cn.gov.cn.dwmtk.cn http://www.morning.lkgqb.cn.gov.cn.lkgqb.cn