AttributeError: у объекта 'CSVPipeline' нет атрибута 'spider_closed'
Я следовал инструкции в http://stackru.com/questions/20753358/how-can-i-use-the-fields-to-export-attribute-in-baseitemexporter-to-order-my-scr/20758558#20758558
и попытался экспортировать поле элементов в порядке. Но терминал просто вывод crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
AttributeError: 'CSVPipeline' object has no attribute 'spider_closed'
вот мой pipelines.py
from scrapy import signals
from scrapy.contrib.exporter import CsvItemExporter
class CSVPipeline(object):
def __init__(self):
self.files = {}
@classmethod
def from_crawler(cls, crawler):
pipeline = cls()
crawler.signals.connect(pipeline.spider_opened, signals.spider_opened)
crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
return pipeline
def spider_opened(self, spider):
file = open('%s_items.csv' % spider.name, 'w+b')
self.files[spider] = file
self.exporter = CsvItemExporter(file)
self.exporter.fields_to_export = ['c_name','c_employeeN','c_website','c_street','c_state_zip_code','c_country','p1c_name','p1c_role','p1c_phoneNumber','p1c_email','p2c_name','p2c_role','p2c_phoneNumber','p2c_email','p3c_name','p3c_role','p3c_phoneNumber','p3c_email','p1h_name','p1h_role','p1h_phoneNumber','p1h_email','p2h_name','p2h_role','p2h_phoneNumber','p2h_email','p3h_name','p3h_role','p3h_phoneNumber','p3h_email','p1f_name','p1f_role','p1f_phoneNumber','p1f_email','p2f_name','p2f_role','p2f_phoneNumber','p2f_email']
self.exporter.start_exporting()
def spider_cloesd(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
И я добавил ITEM_PIPELINES = {'zoominfo_test.pipelines.CSVPipeline': 300,}
в моем setting.py
Я просто не знаю, что случилось. Кто-то может дать мне подсказку, будет высоко ценится. Спасибо!
1 ответ
Решение
У вас явно есть опечатка в имени метода
def spider_cloesd(self, spider):
self.exporter.finish_exporting()
file = self.files.pop(spider)
file.close()