Json数据处理

JSON支持数据格式:

对象(字典)。使用花括号。
数组(列表)。使用方括号。
整形、浮点型、布尔类型还有null类型。
字符串类型(字符串必须要用双引号,不能用单引号)。
多个数据之间使用逗号分开。
注意:json本质上就是一个字符串。

字典和列表转JSON:
  1. import json
  2. books = [
  3. {
  4. 'title': '钢铁是怎样练成的',
  5. 'price': 9.8
  6. },
  7. {
  8. 'title': '红楼梦',
  9. 'price': 9.9
  10. }
  11. ]
  12. json_str = json.dumps(books,ensure_ascii=False)
  13. print(json_str)

因为json在dump的时候,只能存放ascii的字符,因此会将中文进行转义,这时候我们可以使用ensure_ascii=False关闭这个特性。

在Python中。只有基本数据类型才能转换成JSON格式的字符串。也即:int、float、str、list、dict、tuple。

将json数据直接dump到文件中:

json模块中除了dumps函数,还有一个dump函数,这个函数可以传入一个文件指针,直接将字符串dump到文件中。

  1. books = [
  2. {
  3. 'title': '钢铁是怎样练成的',
  4. 'price': 9.8
  5. },
  6. {
  7. 'title': '红楼梦',
  8. 'price': 9.9
  9. }
  10. ]
  11. with open('a.json','w') as fp:
  12. json.dump(books,fp)
将一个json字符串load成Python对象:
  1. json_str = '[{"title": "钢铁是怎样练成的", "price": 9.8}, {"title": "红楼梦", "price": 9.9}]'
  2. books = json.loads(json_str,encoding='utf-8')
  3. print(type(books))
  4. print(books)
直接从文件中读取json:
  1. import json
  2. with open('a.json','r',encoding='utf-8') as fp:
  3. json_str = json.load(fp)
  4. print(json_str)

csv文件处理

读取csv文件:
  1. import csv
  2. with open('stock.csv','r') as fp:
  3. reader = csv.reader(fp)
  4. titles = next(reader)
  5. for x in reader:
  6. print(x)

这样操作,以后获取数据的时候,就要通过下表来获取数据。如果想要在获取数据的时候通过标题来获取。那么可以使用DictReader

  1. import csv
  2. with open('stock.csv','r') as fp:
  3. reader = csv.DictReader(fp)
  4. for x in reader:
  5. print(x['turnoverVol'])
写入数据到csv文件:

写入数据到csv文件,需要创建一个writer对象,主要用到两个方法。一个是writerow,这个是写入一行。一个是writerows,这个是写入多行

  1. import csv
  2. headers = ['name','age','classroom']
  3. values = [
  4. ('zhiliao',18,'111'),
  5. ('wena',20,'222'),
  6. ('bbc',21,'111')
  7. ]
  8. with open('test.csv','w',newline='') as fp:
  9. writer = csv.writer(fp)
  10. writer.writerow(headers)
  11. writer.writerows(values)

也可以使用字典的方式把数据写入进去。这时候就需要使用DictWriter

  1. import csv
  2. headers = ['name','age','classroom']
  3. values = [
  4. {"name":'wenn',"age":20,"classroom":'222'},
  5. {"name":'abc',"age":30,"classroom":'333'}
  6. ]
  7. with open('test.csv','w',newline='') as fp:
  8. writer = csv.DictWriter(fp,headers)
  9. writer = csv.writeheader()
  10. writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
  11. writer.writerows(values)

MySQL处理数据

安装驱动程序:

Python要想操作MySQL。必须要有一个中间件,或者叫做驱动程序。驱动程序有很多。比如有mysqldb、mysqlclient、pymysql等。在这里,我们选择用pymysql。安装方式也是非常简单,通过命令pip install pymysql即可安装。

数据库连接:

数据库连接之前。首先先确认以下工作完成,这里我们以一个pymysql_test数据库.以下将介绍连接mysql的示例代码:

  1. import pymysql
  2. db = pymysql.connect(
  3. host="127.0.0.1",
  4. user='root',
  5. password='root',
  6. database='pymysql_test',
  7. port=3306
  8. )
  9. cursor = db.cursor()
  10. cursor.execute("select 1")
  11. data = cursor.fetchone()
  12. print(data)
  13. db.close()
插入数据:
  1. import pymysql
  2. db = pymysql.connect(
  3. host="127.0.0.1",
  4. user='root',
  5. password='root',
  6. database='pymysql_test',
  7. port=3306
  8. )
  9. cursor = db.cursor()
  10. sql = """
  11. insert into user(
  12. id,username,gender,age,password
  13. )
  14. values(null,'abc',1,18,'111111');
  15. """
  16. cursor.execute(sql)
  17. db.commit()
  18. db.close()

如果在数据还不能保证的情况下,可以使用以下方式来插入数据:

  1. sql = """
  2. insert into user(
  3. id,username,gender,age,password
  4. )
  5. values(null,%s,%s,%s,%s);
  6. """
  7. cursor.execute(sql,('spider',1,20,'222222'))
查找数据:

使用pymysql查询数据。可以使用fetch*方法。

fetchone():这个方法每次之获取一条数据。
fetchall():这个方法接收全部的返回结果。
fetchmany(size):可以获取指定条数的数据。

  1. cursor = db.cursor()
  2. sql = """
  3. select * from user
  4. """
  5. cursor.execute(sql)
  6. while True:
  7. result = cursor.fetchone()
  8. if not result:
  9. break
  10. print(result)
  11. db.close()

或者是直接使用fetchall,一次性可以把所有满足条件的数据都取出来:

  1. cursor = db.cursor()
  2. sql = """
  3. select * from user
  4. """
  5. cursor.execute(sql)
  6. results = cursor.fetchall()
  7. for result in results:
  8. print(result)
  9. db.close()

或者是使用fetchmany,指定获取多少条数据:

  1. cursor = db.cursor()
  2. sql = """
  3. select * from user
  4. """
  5. cursor.execute(sql)
  6. results = cursor.fetchmany(1)
  7. for result in results:
  8. print(result)
  9. db.close()
删除数据:
  1. cursor = db.cursor()
  2. sql = """
  3. delete from user where id=1
  4. """
  5. cursor.execute(sql)
  6. db.commit()
  7. db.close()
更新数据:
  1. conn = pymysql.connect(host='localhost',user='root',password='root',database='pymysql_demo',port=3306)
  2. cursor = conn.cursor()
  3. sql = """
  4. update user set username='aaa' where id=1
  5. """
  6. cursor.execute(sql)
  7. conn.commit()
  8. conn.close()

MongoDB

将MongoDB制作成windows服务:

启动mongodb后,如果想让mongodb一直运行,那么这个终端便不能关闭,而且每次运行的时候还需要指定data的路径。因此我们可以将mongodb制作成一个服务,以后就通过一行命令就可以运行了。以下将讲解如何制作服务:

创建配置文件:在mongodb安装的路径下创建配置文件mongod.cfg(路径和名字不是必须和我这的一样),然后在配置文件中添加以下代码:

  1. logpath=D:\ProgramApp\mongodb\data\log\mongod.log
  2. dbpath=D:\ProgramApp\mongodb\data\db
  3. logpath是日志的路径。dbpathmongodb数据库的存储路径。
安装mongodb服务:

使用以下命令即可将mongodb安装成一个服务:

  1. mongod --config "cfg配置文件所在路径" --install
  2. 比如:
  3. mongod --config "D:\ProgramApp\mongodb\mongod.cfg" --install
  4. 启动mongodbnet start mongodb
  5. 关闭mongodb net stop mongodb
  6. 移除mongodb"D:\ProgramApp\mongodb\bin\mongod.exe" --remove
MongoDB概念介绍:
  1. SQL术语/概念 MongoDB术语/概念 解释/说明
  2. database database 数据库
  3. table collection 数据库表/集合
  4. row document 数据记录行/文档
  5. column field 数据字段/域
  6. index index 索引
  7. joins joins 表连接,MongoDB不支持
  8. primary key/primary key 主键,MongoDB自动将_id字段设置为主键
MongoDB三元素:

三元素:数据库、集合、文档。

文档(document):就是关系型数据库中的一行。文档是一个对象,由键值对构成,是json的扩展形式:
{'name':'abc','gender':'1'}
集合(collection):就是关系型数据库中的表。可以存储多个文档,结构可以不固定。如可以存储如下文档在一个集合中:
{"name":"abc","gender":"1"}
{"name":"xxx","age":18}
{"title":'yyy','price':20.9}

MongoDB基本操作命令:

db:查看当前的数据库。

show dbs:查看所有的数据库。

use 数据库名:切换数据库。如果数据库不存在,则创建一个。(创建完成后需要插入数据库才算创建成功)

db.dropDatabase():删除当前指向的数据库。

db.集合名.insert(value):添加数据到指定的集合中。

db.集合名.find():从指定的集合中查找数据。 更多命令请见:http://www.runoob.com/mongodb/mongodb-tutorial.html

Python操作MongoDB:

安装pymongo:

要用python操作mongodb,必须下载一个驱动程序,这个驱动程序就是pymongo:

pip install pymongo

连接MongoDB:
  1. import pymongo
  2. # 获取连接的对象
  3. client = pymongo.MongoClient('127.0.0.1',port=27017)
  4. # 获取数据库
  5. db = client.zhihu
  6. # 获取集合(表)
  7. collection = db.qa
  8. # 插入一条数据到集合中
  9. collection.insert_one({
  10. "username":"abc",
  11. "password":'hello'
  12. })
数据类型:
  1. 类型 说明
  2. Object ID 文档ID
  3. String 字符串,最常用,必须是有效的UTF-8
  4. Boolean 存储一个布尔值,truefalse
  5. Integer 整数可以是32位或64位,这取决于服务器
  6. Double 存储浮点值
  7. Arrays 数组或列表,多个值存储到一个键
  8. Object 用于嵌入式的文档,即一个值为一个文档
  9. Null 存储Null
  10. Timestamp 时间戳,表示从1970-1-1到现在的总秒数
  11. Date 存储当前日期或时间的UNIX时间格式
操作MongoDB:

操作MongoDB的主要方法如下:

  1. insert_one:加入一条文档数据到集合中。示例代码如下:
  2. collection.insert_one({
  3. "username":"abc",
  4. "password":'hello'
  5. })
  6. insert_many:加入多条文档数据到集合中。
  7. collection.insert_many([
  8. {
  9. "username":'abc',
  10. 'password':'111111'
  11. },
  12. {
  13. "username":'bbb',
  14. 'password':'222222'
  15. },
  16. ])
  17. find_one:查找一条文档对象。
  18. result = collection.find_one()
  19. print(result)
  20. # 或者是指定条件
  21. result = collection.find_one({"username":"abc"})
  22. print(result)
  23. update_one:更新一条文档对象。
  24. collection.update_one({"username":"abc"},{"$set":{"username":"aaa"}})
  25. update_many:更新多条文档对象。
  26. collection.update_many({"username":"abc"},{"$set":{"username":"aaa"}})
  27. delete_one:删除一条文档对象。
  28. collection.delete_one({"username":"abc"})
  29. delete_many:删除多条文档对象。
  30. collection.delete_one({"username":"abc"})

python爬虫#数据存储#JSON/CSV/MYSQL/MongoDB/的更多相关文章

  1. python 爬虫数据存入csv格式方法

    python 爬虫数据存入csv格式方法 命令存储方式:scrapy crawl ju -o ju.csv 第一种方法:with open("F:/book_top250.csv" ...

  2. 爬虫数据存储——安装docker和ElasticSearch(基于Centos7)

    爬虫数据存储--安装docker和ElasticSearch(基于Centos7) 先决条件 操作系统要求 要安装Docker Engine-Community,您需要一个CentOS 7的维护版本. ...

  3. python爬虫+数据可视化项目(关注、持续更新)

    python爬虫+数据可视化项目(一) 爬取目标:中国天气网(起始url:http://www.weather.com.cn/textFC/hb.shtml#) 爬取内容:全国实时温度最低的十个城市气 ...

  4. python中级---->pymongo存储json数据

    这里面我们介绍一下python中操作mangodb的第三方库pymongo的使用,以及简单的使用requests库作爬虫.人情冷暖正如花开花谢,不如将这种现象,想成一种必然的季节. pymongo的安 ...

  5. 04 爬虫数据存储之Mongodb

    MongoDB 认识MongoDB MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案.MongoDB是一个介于关系数据库和非关系数据 ...

  6. python数据存储--JSON

    HTML正文存储为两种格式:JSON和CSV. 存储为JSON: 首先利用Requests访问http://seputu.com获取HTML文档: #!coding:utf-8 import requ ...

  7. Python中的文件处理和数据存储json

    前言:每当需要分析或修改存储在文件中的信息时,读取文件都很有用,对数据分析应用程序来说尤其如此. 例如,你可以编写一个这样的程序:读取一个文本文件的内容,重新设置这些数据的格式并将其写入文件,让浏览器 ...

  8. python3之scrapy数据存储问题(MySQL)

    这次我用的是python3.6,scrapy在python2.7,3.5的使用方法都不同所以要特别注意, 列如 在python3.5的开发环境下scrapy 的主爬虫文件可以使用 from urlli ...

  9. python的数据存储

    Python存储数据 使用json.dump()和json.load() 不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中.用户关闭程序时,你几乎总是要保存他们提供的信息:一种简单 ...

随机推荐

  1. 树的各种操作java

    package mystudy; import java.io.UnsupportedEncodingException; import java.util.LinkedList; import ja ...

  2. .NET预处理器指令

    .NET预处理器指令 做开发以来很少接触到这部分内容,基本上没有用到,偶尔在一些框架中和一些开源项目中会见到,常常因为只关心实现逻辑忽略了这部分的功能.现在自己有点时间了,还是希望能够完整的对这部分做 ...

  3. mysql登录:access denied for user 'root'@'localhost'(using password:YES)

    mysql登录: access denied for user 'root'@'localhost'(using password:YES) 解决: use mysql; select user,ho ...

  4. 在ubuntu16.04上安装eclipse

     在ubuntu16.04上安装eclipse 一.下载     首先我们需要安装jdk1.8及其以上,然后从官网:https://www.eclipse.org/downloads/上下载,需要注意 ...

  5. jmeter测试mysql性能

    1.下载jdbc.将jdbc解压,将mysql-connector-java-version-ga-bin.jar这个文件copy到jmeter/lib下 2.打开jmeter,设置jdbc请求. 1 ...

  6. 020hashlib模块

    #里面内容没有见过,可能会比较难懂,需要找资料.我只是记录了视频中的用法,其他理解的东西,我直接理解,就没有写下来了.下面内容是视频演示过程 import    hashlib m = hashlib ...

  7. AngularJs学习笔记--I18n/L10n

    原版地址:http://code.angularjs.org/1.0.2/docs/guide/i18n 一.I18n and L10n in AngularJS 1. 什么是I18n和L10n? 国 ...

  8. hdu 6169 gems gems gems【DP】

    题目链接:hdu 6169 gems gems gems Now there are n gems, each of which has its own value. Alice and Bob pl ...

  9. 哈哈,原来IOC容器的bean是存在DefaultSingletonBeanRegistry的一个Map类型的属性当中。

    经过查看源代码发现IOC容器中的bean实例(不知道是不是所有的bean)是存储在一个DefaultSingletonBeanRegistry类实例的一个Map类型的属性当中. 下面是DefaultS ...

  10. vue2中用swiper

    一.安装swiper npm install --save swiper 二.home组件 //home.js <app-banner :listImg="bannerList&quo ...