数据存储——CSV文件与mongoDB
本文主讲:将爬取下来的数据持久化存储到CSV文件内或存到mongoDB数据库内、Mysql数据库内,简单的二级爬虫框架等
爬取数据持久化存储(csv)【重点】
python 标准库模块 csv 的使用方法及功能
功能:将数据写入到 csv 文件的模块
语法:
1 | import csv |
两种写入方法:
写作对象.writerow(列表):这是将数据单行写入到 csv 文件内,一个列表元素是一个字段
写作对象.writerows(列表内嵌套元组):这是将数据多行写入到 csv 文件内,一个列表内元组是一行记录
图示:
单行数据写入
多行数据写入
将数据保存至 csv 文件的一些问题处理方法
出现什么问题?
答:多行数据保存时,每行数据下面会多出一行空行(windows专属,linux没有这种问题),这该怎么解决呢
怎么解决?
答:打开文件时加上参数 newline = “” 即可解决!!!
代码演示:
数据持久化存储(mysql)【重点】
python 与 mysql 数据库交互的步骤
第一步:导入 pymysql 模块
第二步:创建铁路对象 way_obj = pymysql.connect(host = 主机,user = 用户名,password = 数据库密码,database = 交互数据库名)
第三步:在铁路对象上创建游标对象 cursor_obj = way_obj.cursor()
第四步:将数据插入到数据库内(两种方法)
1(单行数据插入): cursor_obj.execute(SQL语句,数据列表)
2(多行数据插入):cursor_obj.executemany(SQL语句,列表内嵌套元组数据)
第五步:将更改提交到数据库 way_obj.commit( ) 注意是铁道对象提交,针对mysql数据库的事务特性!
第六步:关闭游标对象 cursor_obj.close()
第七步:关闭铁道对象 way_obj.close( )
截图演示:
将数据存储到数据库的两种方法(单记录插入、多记录插入)
单行数据插入方法—— execute()
功能:将单行数据(列表)插入到数据库内!
语法:游标对象.execute(参数1,参数2)
参数1:SQL语句
参数2:列表数据,所有列表数据就是一行记录
代码演示:
多行数据插入方法—— executemany()
功能:将多行数据(列表内嵌套元组)插入到数据库内
语法:游标对象.executemany(参数1,参数2)
参数1:SQL语句
参数2:列表内嵌套元组,一个元组内所有数据就是数据库内的一行数据!
注意事项:列表内嵌套元组,其中一个元组内的数据就是一行记录
代码演示:
注意事项:多行数据插入方法(executemany)比单行数据插入方法(execute)效率要快的多,因为计算机 i/o次数减少很多!!!
mongoDB数据库基本操作【重点】
mysql、mongoDB、redis数据库的端口号
mysql:3306
mongoDB:27017
redis:6379
mongoDB 数据库的详解
特征:mongoDB数据库是非关系型数据库(开源、免费),以键值对的形式存储数据,存放数据的数据类型为 json 文档,且mongoDB是基于磁盘存储数据(redis基于内存存储数据)
mongoDB数据库与mysql数据库的对比分析:
mysql数据库:
定义:关系型数据库
结构:数据库→数据表→数据表记录
基于存储:不同引擎不同存储方式
存储数据时是否需要提前建表:是
存储模式:静态模式
查询语言:SQL语言
mongoDB数据库:
定义:非关系型数据库
结构:数据库→数据集合→json文档(字典)
基于存储:基于磁盘存储(虚拟内存+持久化)
存储数据时是否需要提前建集合:否
存储模式:动态模式(不需要提前建数据集合以及字段什么的)
查询语言:独特的mongoDB语言
优势:分布式集群
缺点:不支持事务!
注意事项:
1:mongoDB 数据库内的数据集合里面可以存放好多条 json文档(字典)
2:每一个 json 文档就是一个字典!
mongoDB数据库的基本操作(安装、查看数据库、删除数据库等等)
1.mongoDB数据库安装步骤(linux-ubuntu系统):
安装指令:sudo apt-get install mongdb
截图:
2.查看mongoDB数据库内的所有数据表
指令:show dbs
截图:
3 . 进入(切换)数据库
指令:use 数据库名
截图:
4 . 查看当前所在的数据库内所有集合
指令:show collections
截图:
- 查看当前数据库内的数据集合里面有哪些文档
语法:
正常查询输出:db.集合名.find()
格式化查询输出:db.集合名.find().pretty()
截图:
- 查看当前数据库内的数据集合里面的文档数量
语法:db.数据集合名.count()
截图:
7.删除数据库内的指定集合
语法:db.指定数据集合名.drop()
截图:
8.删除指定数据表
语法:db.dropDatabase( )
截图:
9.查看当前所在数据库名
语法:db.getName()
截图:
python 怎么与mongoDB数据库进行交互?
交互步骤:
第一步:导入模块 import pymongo
注意:pymongo不是标准库需要安装
linux终端安装指令:sudu pip3 install pymongo
第二步:创建mongo数据库连接客户对象 con_obj = pymongo.MongoClient(host = 当前主机,port = 端口号)
注意:
1:主机一般都是 127.0.0.1
2:mongoDB数据库的端口号是 27017
3:参数MongoClient方法的port参数数据类型是数字,不是字符串
第三步:创建数据库对象 db_obj = 连接对象[“数据库名”]
注意:数据库名可以是在mongoDB数据库内存在的,也可以是不存在的,存在则直接进行操作,不存在则先创建这个数据库在操作
第四步:创建数据集合对象 set_obj = 数据库对象[“数据集合名”]
第五步:向数据集合内插入文档
插入单条文档数据方法:数据库集合对象.insert_one(字典)
插入多条文档数据方法:数据库集合对象.insert_many(列表内嵌套字典)
注意事项:插入单条文档数据时一个字典就是一条文档数据,插入多条文档数据也是如此(一个字典是一个文档数据)
总体注意:在利用 python 与 mongoDB 数据库进行交互时,不需要提前建好数据库以及数据集合,这是与mysql数据库交互的不同之处!
代码演示:
数据持久化存储(mongodb)【重点】
将数据持久化存储到mongoDB数据库的两种方法
1.单条数据文档插入存储方法——数据集合对象.insert_one({})
功能:将单条文档数据(字典)插入到建好的mongoDB数据库的数据集合内
语法:数据集合对象.insert_one({})
注意:insert_one({})方法里面的参数是字典,一个字典就代表一个文档数据
截图:
2.多条数据文档插入存储方法——数据集合对象.insert_many( [ {},{},{},{} ] )
功能:将多条文档数据(列表内嵌套字典)插入到建好的mongoDB数据库的数据集合内
语法:数据集合对象.insert_many( [ {},{},{},{} ] )
注意:insert_one({})方法里面的参数是列表内嵌套字典,一个字典就代表一个文档数据
截图:
random模块的uniform方法【重点】
random 模块的 uniform 方法的使用
功能:随机生成指定区间的浮点数
语法:random.uniform(1,6) 随机生成1到6的浮点数
截图:
简单的二级爬虫框架【重点】
注意:字太小先保存到计算机内在方法观看‘
未完待续…..