个人认为,scrapy和scrapy-redis不应该讨论区别。
scrapy 是一个通用的爬虫框架,其功能比较完善,可以帮你迅速的写一个简单爬虫,并且跑起来。scrapy-redis是为了更方便地实现scrapy分布式爬取,而提供了一些以redis为基础的组件(注意,scrapy-redis只是一些组件,而不是一个完整的框架)。你可以这么认为,scrapy是一工厂,能够出产你要的spider。而scrapy-redis是其他厂商为了帮助scrapy工厂更好的实现某些功能而制造了一些设备,用于替换scrapy工厂的原设备。
所以要想跑分布式,先让scrapy工厂搭建起来,再用scrapy-redis设备去更换scrapy的某些设备。
那么这些scrapy-redis组件有什么突出特点呢?他们使用了redis数据库来替换scrapy原本使用的队列结构(deque),换了数据结构,那么相应的操作当然都要换啦,所以与队列相关的这些组件都做了更换。
二、scrapy-redis提供了哪些组件?
Scheduler、Dupefilter、Pipeline、Spider
提供了哪些组件具体见darkrho/scrapy-redis · GitHub。