在处理我的抓取工具时,我需要实现一个持久的重复过滤器,它将检测已经被抓取的项目,不仅要删除它们,还要在数据库中创建新的关系。我实际上存储了项目和研究(N到N关系),因此如果项目已经知道(我不关心更新),我仍然希望它与我的新研究相关联。
无论如何,我通过覆盖RFPDupeFilter找到了解决方案。
然而,我花了几个小时研究Spider Middleware和Downloader Middleware,因为我确信解决方案是实现一个新的中间件 - 这里共享的scrapy架构似乎很简单https://doc.scrapy.org/en/latest/topics/architecture.html#data-flow。 最后我看到了对DupeFilter和RFPDupeFilter的引用,这确实是我所需要的。
问题是:为什么这些过滤器没有实现为中间件?是什么让这些过滤器如此具体,以至于它们不适合中间件接口?
感谢您的澄清