Я думаю, что этот вопрос следует задать в группе пользователей scrapy .
AFAIK, поскольку v0.14 Scrapy не поддерживает несколько пауков в одном процессе ( соответствующее обсуждение ), поэтому этот код будет работать нормально.И очевидное решение для нескольких пауков - сделать exporters
диктовку с помощью spider
ключей:
class XmlExportPipeline(object):
def __init__(self):
dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)
self.files = {}
self.exporters = {}
def spider_opened(self, spider):
file = open('%s_products.xml' % spider.name, 'w+b')
self.files[spider] = file
self.exporters[spider] = XmlItemExporter(file)
self.exporters[spider].start_exporting()
def spider_closed(self, spider):
self.exporters[spider].finish_exporting()
file = self.files.pop(spider)
file.close()
def process_item(self, item, spider):
self.exporters[spider].export_item(item)
return item