一个基于scrapy-redis的分布式爬虫模板
Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
RSpider
ProcessItem.py
README.md
request.txt
scrapy.cfg

README.md

RSpider

一个基于scrapy-redis的分布式爬虫模板,在scrapy-redis自带的example的基础上进行修改,添加在实际爬取过程中大部分爬虫可能用到的功能,使的构建分布式爬虫更加的简单。 scrapy-redis: https://github.com/darkrho/scrapy-redis

安装Redis

Windows

Redis官网没有windows的安装程序,但是微软的MsOpenTech团队维护了WindowsRedis,编译了可执行程序,需要的可以到https://github.com/MSOpenTech/redis/releases下载

Ubuntu

$sudo apt-get install redis-server

Redis图形化管理

下载地址:https://github.com/cinience/RedisStudio/releases

安装Scrapy-redis

scrapy-redisGitHub地址:https://github.com/darkrho/scrapy-redis

推荐使用pip安装

$pip install scrapy-redis

使用BSpider

GitHub克隆仓库,克隆成功即可得到一个可以运行的爬虫,该爬虫默认已经配置好了Redis,worker以及用户代理等功能

$ git clone https://github.com/KDF5000/RSpider.git

配置Scrapy-redis

Scrapy-redis的所有配置到放在setting.py的特定位置,如下面所示,每个配置项代表什么意思注释已经详细的说明,不需要过多解释,如果不想使用Scrapy-redis将所有配置项注释掉即可

# 修改scrapy默认的调度器为scrapy重写的调度器 启动从reids缓存读取队列调度爬虫
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 调度状态持久化,不清理redis缓存,允许暂停/启动爬虫
SCHEDULER_PERSIST = True

# 请求调度使用优先队列(默认)
#SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderPriorityQueue'

# 请求调度使用FIFO队列
#SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderQueue'

# 请求调度使用LIFO队列
#SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.SpiderStack'

# 最大的空闲时间,避免分布式爬取得情况下爬虫被关闭
# 此设置只适用于SpiderQueue和SpiderStack
# 也是爬虫第一次启动时的等待时间(应为队列是空的)
#SCHEDULER_IDLE_BEFORE_CLOSE = 10

# 存储爬取到的item,一定要在所有的pipeline最后,即设定对应的数字大于其他pipeline
ITEM_PIPELINES = {
    'RSpider.pipelines.BaseSpiderPipeline': 256,
    'scrapy_redis.pipelines.RedisPipeline': 300
}

# 指定redis的地址和端口(可选,程序将使用默认的地址localhost:6379)
REDIS_HOST = 'localhost'
REDIS_PORT = 6378

# 声明redis的url地址(可选)
# 如果设置了这一项,则程序会有限采用此项设置,忽略REDIS_HOST 和 REDIS_PORT的设置
#REDIS_URL = 'redis://user:pass@hostname:9001'

配置graphite

安装graphite

目前graphite不支持Windows,所以使用Windows的用户要么在自己电脑搭个虚拟环境,要么在一台可以访问的Linux主机搭建该服务。如果有时间研究一下Docker自己写个镜像。 具体安装参考Ubuntu 14.04 安装图形监控工具Graphite

Scrapy配置graphite

该模板源码自定一个scrapyStats Collection,封装了graphite client使用plaintext protocol发送数据到graphite所在服务器的Carbon,客户端的使用可以查看statscol/graphite.py文件

无图无真相