7

我有一个带有多个蜘蛛和多个管道的 Scrapy 项目。有没有办法告诉蜘蛛 A 使用管道 A 等???

我的 pipelines.py 有多个管道类,每个类都做不同的事情,我希望能够告诉蜘蛛使用特定的管道。

我看不到任何明显的方法来查看可用的scrapy命令来做到这一点......

4

2 回答 2

12

ITEM_PIPELINES在引擎启动期间为项目中的所有蜘蛛全局定义设置。它不能动态更改每个蜘蛛。

这是你可以做的。定义应该通过管道本身的管道处理哪些蜘蛛。在您的管道的 process_item 方法中跳过/继续处理蜘蛛返回的项目,例如:

def process_item(self, item, spider): 
    if spider.name not in ['spider1', 'spider2']: 
        return item  

    # process item

另见:

希望有帮助。

于 2013-08-03T17:26:30.320 回答
12

可以在蜘蛛类的 custom_settings 属性中指定要使用的管道:

class BookSpider(BaseSpider):
    name = "book_spider"

    custom_settings = {
        'ITEM_PIPELINES': {
            'my_app.pipelines.BookPipeline': 300,
        }
    }

    def parse(self, response):
        return
于 2016-12-02T02:42:58.747 回答