scrapy_redis实现分布式配置文件

scrapy框架只能单机爬取,不能做分布式,配合redis可实现分布式爬虫。
实现分布式爬虫需要三类服务器,需要自己搭建
一:redis服务器,即url调度器,所有分布式节点需要在此服务器中读取url等信息
二:节点服务器,存放所有经过scrapy_redis配置过的项目文件
三:目标数据库服务器,用于持久化存储爬取的数据,搭建的数据库可以是redis,mysql,mongo等
配置步骤:
1.需要已经开发完成的单机的基于scrapy框架的爬虫项目
2.配置setting.py文件,需要配置的已在注释中写明:

# 只打印出error级错误
LOG_LEVEL = 'ERROR'
# scrapy_redis去重组件  # scrapy_redis配置必须
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 使用redis调度器  # scrapy_redis配置必须
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 指定redis数据库  # scrapy_redis配置必须
REDIS_HOST = 'xxx.xxx.xxx.xxx'
REDIS_PORT = xxxx
# 不清除数据库   # scrapy_redis配置非必须
SCHEDULER_RERSIST = True

# 爬虫中间件  去掉注释
DOWNLOADER_MIDDLEWARES = {
   'pinganSpider.middlewares.DownloaderMiddleware': 543,
}

# item管道  去掉注释
ITEM_PIPELINES = {
   'pinganSpider.pipelines.Pipeline': 300,
   # 开启管道 存入redis数据库   # scrapy_redis配置必须
   'scrapy_redis.pipelines.RedisPipeline': 301,
}

3.配置项目.py爬虫文件
引入RedisSpider类

from scrapy_redis.spiders import RedisSpider

继承这个类

class Spider(RedisSpider): # scrapy.Spider)

起始地址改写成这样,此处爬虫项目名可随意,习惯此命名

redis_key = '爬虫项目名:start_urls'

4.配置pipelines.py文件,统一写入一个目标数据库(外网可访问数据库)中,单机爬虫开发完成,此处不需要改
5.将n个节点的服务器都上传完成项目文件。所有节点先命令行启动项目

scrapy crawl 爬虫名

6.命令行启动redis调度器服务器

redis-cli -h xxx.xxx.xxx.xxx -p xxxx

将起始地址写入此redis数据库

lpush pingan:start_urls 'https://www.baidu.com'

到此完成分布式爬虫
节点服务器会自动抢起始url以及后续url,完成爬虫

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值