2

次のパイプラインを使用してアイテムを CSV にエクスポートしています (Scrapy 0.17 を使用):

from scrapy import signals
from scrapy.contrib.exporter import CsvItemExporter

class CsvExportPipeline(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('/home/ubuntu/SCRAPING/%s_%s.csv' % (self.name, datetime.datetime.now()), 'w+b')
        self.files[spider] = file
        self.exporter = CsvItemExporter(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

ただし、このパイプラインを使用すると、次のエラーが発生します exceptions.AttributeError: 'CsvExportPipeline' object has no attribute 'exporter

私が欠けているものを提案してください。

4

1 に答える 1

1

解決策を見つけました。問題は、ファイルに名前を付けるときにself.nameを使用したことでした.それはspider.nameである必要があります.エラーメッセージは単に誤解を招き、数時間かかりました.

于 2013-08-22T18:34:48.460 に答える