scrapy_redis实现爬虫

时间:2023-03-09 03:28:56
scrapy_redis实现爬虫

1、scrapy_redis的流程

  • 在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中
  • 所有的服务器公用一个redis中的request对象
  • 所有的request对象存入redis前,都会在同一个redis中进行判断,之前是否已经存入过
  • 在默认的情况下,所有数据会存放在redis中
  • scrapy_redis实现爬虫

2、scrapy_redis的原理分析

我们从settings.py中的三个配置来进行分析 分别是:

  • RedisPipeline
  • RFPDupeFilter
  • Schedule

2.1、Scrapy_redis之RedisPipeline

RedisPipeline中观察process_item,进行数据的保存,存入了redis中

scrapy_redis实现爬虫

2.2 Scrapy_redis之RFPDupeFilter

RFPDupeFilter 实现了对request对象的加密

scrapy_redis实现爬虫

2.3 Scrapy_redis之Scheduler

scrapy_redis调度器的实现了决定什么时候把request对象加入带抓取的队列,同时把请求过的request对象过滤掉

scrapy_redis实现爬虫

由此可以总结出request对象入队的条件

  • request之前没有见过
  • request的dont_filter为True,即不过滤
  • start_urls中的url地址会入队,因为他们默认是不过滤