需先安装scrapy_redis
pip install scrapy_redis
一、settings.py
ITEM_PIPELINES = {
'CrawlSpiderDemo.pipelines.CrawlspiderdemoPipeline': 300,
# 分布式的爬虫的数据可以不通过本地的管道(数据不需要往本地存),数据需要存在redis数据库中,在这里需要加入一个redis数据库的管道组件
"scrapy_redis.pipelines.RedisPipeline":400
}
# 指定Redis数据库相关配置
# Redis的主机地址
REDIS_HOST = "10.36.133.159"
# 端口号
REDIS_PORT = 6379
# 密码
# REDIS_PARAMS = {"password":'xxxx'}
# 1、调度器需要切换成Scrapy_Redis的调度器(这个调度器是Scrapy_Redis组件对scrapy原生调度器的重写,加入一些分布式调度的算法)
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 2、加入scrapy_redis的去重组件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 3、爬取过程中是否允许暂停
SCHEDULER_PERSIST = True
2、爬虫文件(例:dushu.py)
# 引入分布式爬虫类
from scrapy_redis.spiders import RedisCrawlSpider
# start_urls = ['https://www.dushu.com/book/1002.html'] # 分布式的爬虫所有的url都是从redis数据库的相关键下面提取
# redis_key这个属性指定了分布式爬虫在获取url的时候从哪些键中获取的
redis_key = "dushu:start_urls"
3. 命令行终端连接远程数据库
redis-cli -h 192.168.238.134 # 远程ip
- 添加爬取路由
192.168.238.134:6379> lpush dushu:start_urls https://www.dushu.com/book/1005_2.html