如何实现数据的备份?
- 一、数据的备份指的是将爬取到的一组数据存储到多个不同的载体(文件、MySQL、MongoDB、Redis)中
- 二、持久化存储的操作必须要写在管道文件中(pipelines.py)
一个管道类对应一种形式的持久化存储
如果将数据存储到多个载体中则必须要有多个管道类
我们前面讲过,要使用管道必须要在settings.py文件中开启管道,这里存在一个优先级,数值越小优先级越高。那么现在有一个问题,让两个管道类都接收到item且对其进行持久化存储,爬虫文件提交的item可以同时提交给多个管道类吗?我们知道爬虫文件提交的item只可以交给优先级最高的一个管道类。
如何可以让优先级低的管道类也可以接收item呢?
可以让优先级高的管道类在process_item方法中通过return item的形式将item传递给下一个即将被执行的管道类。记住这一点,我们再来往下进行!
如果想使用多个管道需要在每个管道的process_item方法中return item并且对管道进行注册,优先级不可相同!
数据存储到MySQL
前提是你的电脑中有mysql数据库,这里需要现在数据库中创建一张表:
show databases; #查看一下所有的数据库
create database spider charset=utf8; #创建数据库spider
use spider #切换到spider数据库中
create table meizi (href varchar(100),title varchar(1000)); #创建数据库表
desc meizi
然后在Python需要安装PyMysql模块,代码参考:
import pymysql
#将数据存储到MySQL中一份
class MysqlPipeline(object):
conn=None
def open_spider(self,spider):
#连接mysql数据
self.conn = pymysql.Connect(host='127.0.0.1', port=3306,db='test',
charset='utf8')
#print(self.conn)
def