用python 写网络爬虫第三章

前面几章,我们实现了数据的爬取,但是并未实现数据的存储。我们可以将爬取到的数据存储于CSV或者txt文件中,既简单又实用,适合存储少量、结构简单的数据。对于数据量大、结构较复杂,需要频繁操作数据的情况下,就需要考虑实用数据库持久化数据了。本章主要实现使用数据库存储通过网络爬虫爬取到的数据,包括:

  • 数据存储于文件中
    使用Python的文件操作函数,实现将数据存储于csv或txt等文件中。

  • MySQL数据库的使用
    简单介绍MySQL数据库的特点、安装、环境配置以及Python调用MySQL操作数据库的方法。

  • MongoDB数据库的使用
    简单介绍MongoDB数据库的特点、安装、环境配置以及Python调用MongoDB操作数据库的方法。

  • Mon Redis数据库的使用
    简单介绍Redis数据库的特点、安装、环境配置以及Python调用Redis操作数据库的方法。
    本章的学习路径如下:
    在这里插入图片描述
    1、数据保存于文件中
    保存数据最简单的方法就是使用Python的文件操作函数,将数据保存于csv、txt等文件中,Python的文件操作函数主要有:

  • q open():打开文件

  • q write():写入文件

  • q close():关闭文件
    当配合with一起使用时,我们无需关心文件关闭问题,系统自动关闭,如:with open(“douban.csv”) as f:下面通过视频来实现将豆瓣电影TOP250的数据保存于csv文件中。

//在python中新建文件,xpath_mysql.py 定义一个保存到数据库的函数
def saveToMysql():
	#连接数据库服务器
	db=Mysqldb.connect("主机""用户名","密码""数据库的名称",charset="utf8")
	#使用cursor()来获取游标操作数据
	cursor=db.cursor()
	for one in allMovieList():
		#SQL语句插入
		sql="insert into movies(name,star,numm1) values('%s','%f','%d')"%(one[0],float(one[1],int one[2]))
		try:
			#执行sql语句
			cursor.execute(sql)执行
			db.commit()
		expect:
			db.rollback() #遇到错误就回滚
	db.close() #此处断开
		

MYSQL数据库总结:

  • MySQL数据库下载:https://dev.mysql.com/downloads/windows/installer。推荐MSI格式文件下载。
  • Navicat数据库可视化工具:百度搜索下载。
  • 安装Python访问MySQL的第三方库:mysqlclient
  • Python操作数据库基本方法:
  • q connect( ):连接数据库服务器
  • q execute( ):执行SQL语句
  • q commit( ):提交到数据库
  • q rollback( ):回滚
  • q close( ):关闭数据库服务器

MongoDB是一个面向文档存储的非关系型数据库,是用C++编写的。MongoDB将数据存储为一个文档,数据结构由键值对(key=>value)组成,类似于JSON对象。MongoDB中的术语与SQL的表述有一些不同,下表中列出了SQL与MongoDB对应的术语。
在这里插入图片描述
Redis介绍
Redis全称REmote DIctionary Server。是一个由Salvatore Sanfilippo写的数据存储系统。
Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:

  1. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  2. q Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
  3. q Redis支持数据的备份,即master-slave模式的数据备份。

Redis的优势有

  • 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
  • q 丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。
  • q 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • q 丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等。
import redis
//写一个关于保存到redis的函数
def svaeToRedis():
	#连接redis数据库,得到一个连接对象
	db_com=redis.StrictRedis(host="localhost",port=6379,db=1#默认的
	#设置一个编号
	for one in allMoviesList:
		item={"name":one[0],"start":one[1],"num":one[2]}
		#批量设置键值对
		db_conn.hmset("movie-%d"%item_index,item)
	#关闭数据库
	db_conn.connection-pool.disconnect()
	item_index t=1

Python操作数据库基本方法:

  • StrictRedis ( ):连接数据库服务器。
  • q hmset ( ):批量插入键值对。
  • q disconnect ( ):关闭数据库服务器的连接。
    本章主要介绍了Python操作MySQL、MongoDB和Redis三种数据库,实现了将爬虫爬取到的数据持久化保存到数据库中,这仅仅是三大数据库的基本用法,如果想更深入地学习这些数据库,可以参考以下网站:
    Mongodb菜鸟教程:http://www.runoob.com/mongodb/mongodb-tutorial.html。Redis菜鸟教程:http://www.runoob.com/redis/redis-tutorial.html。
    MySql菜鸟教程:http://www.runoob.com/mysql/mysql-tutorial.html。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃香菜的斌斌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值