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数据库中看到分布式
2.gerapy部署:
使用gerapy之前需要保证Scrapyd是可用的
直接在终端CMD中输入:scrapyd
检测是否启动scrapd:
在浏览器中输入:http://127.0.0.1:6800/
显示如下,成功启动
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
会生成一个gerapy文件夹,输入cd gerapy
进入文件夹
再使用语句gerapy migrate
,生成gerapy数据库
启动gerapy服务:gerapy runserver
在浏览器中输入:http://127.0.0.1:8000/
Ctrl+c终止刚才运行的gerapy runserver
创建超级用户,用来管理gerapy
输入语句gerapy createsuperuser
之后再次启动gerapy:gerapy runserver
用刚才设定的超级用户 用户名和密码输入登录:
2.1更改Scrapy的gerapy连接文件:
在书写完毕的scrapy文件中,找到scrapy.cfg文件
2.2登录后的项目部署:
点击主机管理:
创建:
IP:本机IP,在CMD使用ipconfig查看
端口:scrapyd的端口号
若出现无法连接的情况,则是Scrapyd配置中的问题需要更改:
文件路径:E:\software\python\python3.8.6\Lib\site-packages\scrapyd
找到default_scrapyd.conf文件把bind_address改为 0.0.0.0 这样所有IP都可以连接
之后在./gerpay/projects中将完善好的Scrapy爬虫文件夹fangru
即可在gerapy网页项目管理中查看到,点击部署
文件需要进行打包才可以进行部署
部署到刚才创建的主机中:
再看到主机项目中:使用调度
点击运行即可
注意:
启动一次gerapy之后,可能会有无法再爬取数据的情况,这是因为分布式的原因,代码为这行:
# True 会往Redis数据库中保存指纹, False 不会
SCHEDULER_PERSIST = True
启动过一次之后,Redis数据库中的数据存满若再次执行会有指纹重复导致无法运行程序
若要多次运行爬虫,则有两种方法:
1.将SCHEDULER_PERSIST = False
设为False;
2.每次运行清空redis数据库中关于指纹的数据;