1.分布式部署:

得先安装scrapy_redis库
分布式的安装及讲解:

需要下载redis
redis数据库的安装:

在Scrapy项目的setting.py文件中加入:

SCHEDULER = "scrapy_redis.scheduler.Scheduler"  # 开启Scrapy-redis调度器,分布式配置
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"  # 启动Redis去重

REDIS_URL = 'redis://192.168.1.102:6379'   # 连接本机Redis
SCHEDULER_PERSIST = True   # 当爬虫停住,保留之前存在的指纹

即可

运行写好的Scrapy爬虫,可以在redis数据库中看到分布式

postgre 能做分布式部署 分布式如何部署_爬虫

2.gerapy部署:

使用gerapy之前需要保证Scrapyd是可用的

直接在终端CMD中输入:scrapyd 检测是否启动scrapd:

浏览器中输入:http://127.0.0.1:6800/

显示如下,成功启动

postgre 能做分布式部署 分布式如何部署_爬虫_02


Gerapy使用流程:

1.gerapy init 初始化,会在文件夹下创建一个gerapy文件夹
2.cd gerapy
3.gerapy migrate
4.gerapy runserver 默认是127.0.0.1:8000
5.gerapy createsuperuser 创建账号密码,默认情况下都是没有的
6.游览器输入127.0.0.1:8000 登录账号密码,进入主页
7.各种操作,比如添加主机,打包项目,定时任务等

在目标文件夹下输入gerapy init

postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_03


会生成一个gerapy文件夹,输入cd gerapy进入文件夹

再使用语句gerapy migrate,生成gerapy数据库

postgre 能做分布式部署 分布式如何部署_redis_04


启动gerapy服务:gerapy runserver

postgre 能做分布式部署 分布式如何部署_数据库_05


在浏览器中输入:http://127.0.0.1:8000/

postgre 能做分布式部署 分布式如何部署_python_06


Ctrl+c终止刚才运行的gerapy runserver

创建超级用户,用来管理gerapy

输入语句gerapy createsuperuser

postgre 能做分布式部署 分布式如何部署_数据库_07


之后再次启动gerapygerapy runserver

用刚才设定的超级用户 用户名和密码输入登录:

postgre 能做分布式部署 分布式如何部署_爬虫_08

2.1更改Scrapy的gerapy连接文件:

在书写完毕的scrapy文件中,找到scrapy.cfg文件

postgre 能做分布式部署 分布式如何部署_python_09

2.2登录后的项目部署:

点击主机管理:

postgre 能做分布式部署 分布式如何部署_python_10


创建:

postgre 能做分布式部署 分布式如何部署_数据库_11

IP:本机IP,在CMD使用ipconfig查看

端口:scrapyd的端口号

postgre 能做分布式部署 分布式如何部署_python_12

若出现无法连接的情况,则是Scrapyd配置中的问题需要更改:
文件路径:E:\software\python\python3.8.6\Lib\site-packages\scrapyd
找到default_scrapyd.conf文件

把bind_address改为 0.0.0.0 这样所有IP都可以连接

postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_13

postgre 能做分布式部署 分布式如何部署_数据库_14

之后在./gerpay/projects中将完善好的Scrapy爬虫文件夹fangru

postgre 能做分布式部署 分布式如何部署_python_15


postgre 能做分布式部署 分布式如何部署_爬虫_16


postgre 能做分布式部署 分布式如何部署_爬虫_17

即可在gerapy网页项目管理中查看到,点击部署

postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_18


文件需要进行打包才可以进行部署

postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_19


部署到刚才创建的主机中:

postgre 能做分布式部署 分布式如何部署_redis_20

再看到主机项目中:使用调度

postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_21


点击运行即可

postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_22


postgre 能做分布式部署 分布式如何部署_postgre 能做分布式部署_23

注意
启动一次gerapy之后,可能会有无法再爬取数据的情况,这是因为分布式的原因,代码为这行:

# True 会往Redis数据库中保存指纹, False 不会
SCHEDULER_PERSIST = True

启动过一次之后,Redis数据库中的数据存满若再次执行会有指纹重复导致无法运行程序

若要多次运行爬虫,则有两种方法:

1.将SCHEDULER_PERSIST = False设为False;

2.每次运行清空redis数据库中关于指纹的数据;

postgre 能做分布式部署 分布式如何部署_爬虫_24