我是靠谱客的博主 爱笑果汁,最近开发中收集的这篇文章主要介绍从零搭建Redis-Scrapy分布式爬虫,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

零、Scrapy-Redis分布式策略:
假设我有四台电脑:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2

  • Master端(核心服务器) - Windows 10:搭建一个Redis数据库,不负责爬取,只负责url指纹判重、Request的分配,以及数据的存储
  • Slave端(爬虫程序执行端) - Mac OS X 、Ubuntu 16.04、CentOS 7.2:负责执行爬虫程序,运行过程中提交新的Request给Master

首先Slave端从Master端拿任务(Request、url)进行数据抓取,Slave抓取数据的同时,产生新任务的Request便提交给 Master 处理;

Master端只有一个Redis数据库,负责将未处理的Request去重和任务分配,将处理后的Request加入待爬队列。

Scrapy-Redis默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作Scrapy-Redis都已经帮我们做好了,我们只需要继承RedisSpider、指定redis_key就行了。

缺点是,Scrapy-Redis调度的任务是Request对象,里面信息量比较大(不仅包含url,还有callback函数、headers等信息),可能导致的结果就是会降低爬虫速度、而且会占用Redis大量的存储空间,所以如果要保证效率,那么就需要一定硬件水平。

一、安装Redis
安装Redis:http://redis.io/download

安装完成后,拷贝一份Redis目录下的redis.conf到任意目录,如/etc/redis/redis.conf

二、修改配置文件 redis.conf
打开你的redis.conf配置文件:

  • 非Windows系统: sudo vi /etc/redis/redis.conf
  • Windows系统:C:…Redisconfredis.conf

Master端注释bind 127.0.0.1,允许Slave端才能远程连接到Master端的Redis数据库。

daemonize yes表示Redis默认不作为守护进程运行,在运行redis-server /etc/redis/redis.conf时候将显示Redis启动提示画面;daemonize no则默认后台运行,不必重开一个终端窗口执行其他命令,看个人喜好和实际需要。

三、测试Slave端远程连接Master端
测试中,Master端Windows 10 的IP地址为:192.168.199.108

  1. Master端按指定配置文件启动redis-server:
    非Windows系统:sudo redis-server /etc/redis/redis/conf
    Windows系统:redis-server读取默认配置即可。
  2. Master端启动本地redis-cli:
  3. slave端启动redis-cli -h 192.168.199.108

Slave端无需启动redis-server,如果Slave端能读取Master端Redis数据库,表示连接成功。

四、Redis数据库桌面管理工具
这里推荐Redis Desktop Manager,支持Windows、Mac OS X、Linux:

下载地址:https://redisdesktop.com/download

最后

以上就是爱笑果汁为你收集整理的从零搭建Redis-Scrapy分布式爬虫的全部内容,希望文章能够帮你解决从零搭建Redis-Scrapy分布式爬虫所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部