【问题标题】:How do I create middleware for parse and parse_item using Scrapy?如何使用 Scrapy 创建用于 parse 和 parse_item 的中间件?
【发布时间】:2019-08-06 00:16:44
【问题描述】:

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

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

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

【问题讨论】:

  • 创建一个函数并在parseparse_item 中运行它。这样你就不会重复自己 - 你只有一个功能 - 但你会在两个地方使用它 - parseparse_item

标签: python scrapy middleware


【解决方案1】:

在引发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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    相关资源
    最近更新 更多