如何使用 Scrapy 创建用于解析和 parse_item 的中间件?

How do I create middleware for parse and parse_item using Scrapy?

我正在使用 Scrapy,并希望能够检查我的数据库中是否有 should_continue 标志,如果它为 false,则引发 CloseSpider 异常。但是,根据此处的文档:http://doc.scrapy.org/en/latest/topics/exceptions.html,只能从 parseparse_item.

调用 CloseSpider

我可以为每个蜘蛛在每个 parseparse_item 中添加一个函数,但这违背了 DRY 原则。我能以某种方式创建一个总是在调用这些函数之前调用的 parseparse_item 中间件吗?

我无法使用 DOWNLOADER_MIDDLEWARE 或 SPIDER_MIDDLEWARE 触发它,正确的方法是什么?

CloseSpider被引发时Scrapy唯一做的就是调用执行引擎的close_spider()方法:https://github.com/scrapy/scrapy/blob/master/scrapy/core/scraper.py#L152-L153

您可以自己调用该方法来获得相同的结果。

这也是 CloseSpider 扩展所做的:https://github.com/scrapy/scrapy/blob/master/scrapy/extensions/closespider.py