Json数据处理

JSON支持数据格式:

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

字典和列表转JSON:
import json

books = [
{
'title': '钢铁是怎样练成的',
'price': 9.8
},
{
'title': '红楼梦',
'price': 9.9
}
]

json_str = json.dumps(books,ensure_ascii=False)
print(json_str)

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

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

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

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

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

csv文件处理

读取csv文件:
import csv

with open('stock.csv','r') as fp:
reader = csv.reader(fp)
titles = next(reader)
for x in reader:
print(x)

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

import csv

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

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

import csv

headers = ['name','age','classroom']
values = [
('zhiliao',18,'111'),
('wena',20,'222'),
('bbc',21,'111')
]
with open('test.csv','w',newline='') as fp:
writer = csv.writer(fp)
writer.writerow(headers)
writer.writerows(values)

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

import csv

headers = ['name','age','classroom']
values = [
{"name":'wenn',"age":20,"classroom":'222'},
{"name":'abc',"age":30,"classroom":'333'}
]
with open('test.csv','w',newline='') as fp:
writer = csv.DictWriter(fp,headers)
writer = csv.writeheader()
writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
writer.writerows(values)

MySQL处理数据

安装驱动程序:

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

数据库连接:

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

import pymysql

db = pymysql.connect(
host="127.0.0.1",
user='root',
password='root',
database='pymysql_test',
port=3306
)
cursor = db.cursor()
cursor.execute("select 1")
data = cursor.fetchone()
print(data)
db.close()
插入数据:
import pymysql

db = pymysql.connect(
host="127.0.0.1",
user='root',
password='root',
database='pymysql_test',
port=3306
)
cursor = db.cursor()
sql = """
insert into user(
id,username,gender,age,password
)
values(null,'abc',1,18,'111111');
"""
cursor.execute(sql)
db.commit()
db.close()

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

sql = """
insert into user(
id,username,gender,age,password
)
values(null,%s,%s,%s,%s);
"""

cursor.execute(sql,('spider',1,20,'222222'))
查找数据:

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

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

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
while True:
result = cursor.fetchone()
if not result:
break
print(result)
db.close()

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

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
results = cursor.fetchall()
for result in results:
print(result)
db.close()

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

cursor = db.cursor()

sql = """
select * from user
"""

cursor.execute(sql)
results = cursor.fetchmany(1)
for result in results:
print(result)
db.close()
删除数据:
cursor = db.cursor()

sql = """
delete from user where id=1
"""

cursor.execute(sql)
db.commit()
db.close()
更新数据:
conn = pymysql.connect(host='localhost',user='root',password='root',database='pymysql_demo',port=3306)
cursor = conn.cursor()

sql = """
update user set username='aaa' where id=1
"""
cursor.execute(sql)
conn.commit()

conn.close()

MongoDB

将MongoDB制作成windows服务:

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

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

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

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

mongod --config "cfg配置文件所在路径" --install

比如:
mongod --config "D:\ProgramApp\mongodb\mongod.cfg" --install
启动mongodb:net start mongodb。

关闭mongodb: net stop mongodb。

移除mongodb:"D:\ProgramApp\mongodb\bin\mongod.exe" --remove。
MongoDB概念介绍:
SQL术语/概念    MongoDB术语/概念 解释/说明
database    database    数据库
table   collection  数据库表/集合
row document    数据记录行/文档
column field    数据字段/域
index   index   索引
joins   joins   表连接,MongoDB不支持
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:
import pymongo
# 获取连接的对象
client = pymongo.MongoClient('127.0.0.1',port=27017)
# 获取数据库
db = client.zhihu
# 获取集合(表)
collection = db.qa
# 插入一条数据到集合中
collection.insert_one({
"username":"abc",
"password":'hello'
})
数据类型:
类型  说明
Object ID   文档ID
String  字符串,最常用,必须是有效的UTF-8
Boolean 存储一个布尔值,true或false
Integer 整数可以是32位或64位,这取决于服务器
Double  存储浮点值
Arrays  数组或列表,多个值存储到一个键
Object  用于嵌入式的文档,即一个值为一个文档
Null    存储Null值
Timestamp   时间戳,表示从1970-1-1到现在的总秒数
Date    存储当前日期或时间的UNIX时间格式
操作MongoDB:

操作MongoDB的主要方法如下:

insert_one:加入一条文档数据到集合中。示例代码如下:
collection.insert_one({
"username":"abc",
"password":'hello'
})
insert_many:加入多条文档数据到集合中。
collection.insert_many([
{
"username":'abc',
'password':'111111'
},
{
"username":'bbb',
'password':'222222'
},
])

find_one:查找一条文档对象。

result = collection.find_one()
print(result)
# 或者是指定条件
result = collection.find_one({"username":"abc"})
print(result)
update_one:更新一条文档对象。
collection.update_one({"username":"abc"},{"$set":{"username":"aaa"}})
update_many:更新多条文档对象。
collection.update_many({"username":"abc"},{"$set":{"username":"aaa"}})
delete_one:删除一条文档对象。
collection.delete_one({"username":"abc"})
delete_many:删除多条文档对象。
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. Suse LAMP setup

    This page will describe the steps you have to take to install LAMP, which stands for Linux Apache Ma ...

  2. Day04——Python模块

    一.模块简介 模块是实现了某个功能的代码集合,比如几个.py文件可以组成代码集合即模块.其中常见的模块有os模块(系统相关),file模块(文件操作相关) 模块主要分三类: 自定义模块 :所谓自定义模 ...

  3. Python初学者第十天 集合、十六进制

    10day 数据类型:集合 set 1.集合的定义 集合:无序的.不重复的数据组合. 特性:a.去重,把一个列表变成集合,就自动去重了 b.关系测试.测试两组数据之间的交集.差集.并集等关系 2.集合 ...

  4. 安装python File "/usr/bin/pip", line 11, in <module> sys.exit(main()) File "/usr/lib/python3.4/site-packages/pip/__init__.py", line 215, in main locale.setlocale(locale.LC_ALL, '') File "/u

      $ uname -a Linux debian 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u6 (2015-11-09) x86_64 GNU ...

  5. nginx限制IP恶意调用短信接口处理方法

    真实案例: 查看nginx日志,发现别有用心的人恶意调用API接口刷短信: /Jun/::: +] "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) ...

  6. 远程计算机或设备将不接受连接,IE无法上网

    遇到一个奇葩问题,IE浏览器突然不能上网了,但是其他浏览器可以,QQ什么的也都正常,只有IE是出现:远程计算机或设备将不接受连接 这个问题,网上找了很多答案都没用,什么设置WINS,允许远程访问,取消 ...

  7. February 4 2017 Week 5 Saturday

    It takes a great man to be a good listener. 懂得倾听的人才是真的了不起. Don't make comments before you have learn ...

  8. [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP叠加图

    关于如何移植在android上使用SDL,可以参考[原]零基础学习SDL开发之移植SDL2.0到Android 和 [原]零基础学习SDL开发之在Android使用SDL2.0显示BMP图 . 在一篇 ...

  9. Intellij IDEA 格式化代码

  10. DispatcherServlet类的分析

    突然发现拿博客园来做笔记挺好的,不会弄丢.下面我把DispatcherServlet类的部分源代码复制到这里,然后阅读,把重要的地方翻译一下,该做笔记的地方做下笔记,蹩脚英语. =========== ...