[英]Possibly incorrect spider/exporter example code in scrapy docs
有人可以检查下面的代码是否正确吗? 可以在http://readthedocs.org/docs/scrapy/en/0.14/topics/exporters.html上找到该代码。
我认为这是不正确的,因为:
感谢您的协助。
class XmlExportPipeline(object):
def __init__(self):
dispatcher.connect(self.spider_opened, signals.spider_opened)
dispatcher.connect(self.spider_closed, signals.spider_closed)
self.files = {}
def spider_opened(self, spider):
file = open('%s_products.xml' % spider.name, 'w+b')
self.files[spider] = file
self.exporter = XmlItemExporter(file)
self.exporter.start_exporting()
def spider_closed(self, spider):
self.exporter.finish_exporting()
file = self.files.pop(spider)
file.close()
def process_item(self, item, spider):
self.exporter.export_item(item)
return item
我认为这个问题应该在scrapy-users组中提出 。
AFAIK,由于Scrapy v0.14不会在一个进程中支持多个蜘蛛( 相关讨论 ),因此此代码可以正常工作。 对于多个蜘蛛的明显解决方法是使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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.