非常に単純なものが欠けているようです。私がやりたいのは;
、代わりにCSVエクスポーターで区切り文字として使用することです,
。
CSVエクスポーターがkwargsをcsvライターに渡すことは知っていますが、これを区切り文字に渡す方法がわかりません。
私は自分のスパイダーを次のように呼んでいます:
scrapy crawl spidername --set FEED_URI=output.csv --set FEED_FORMAT=csv
ではcontrib/feedexport.py
、
class FeedExporter(object):
...
def open_spider(self, spider):
file = TemporaryFile(prefix='feed-')
exp = self._get_exporter(file) # <-- this is where the exporter is instantiated
exp.start_exporting()
self.slots[spider] = SpiderSlot(file, exp)
def _get_exporter(self, *a, **kw):
return self.exporters[self.format](*a, **kw) # <-- not passed in :(
自分で作成する必要があります。例を次に示します。
from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter
class CsvOptionRespectingItemExporter(CsvItemExporter):
def __init__(self, *args, **kwargs):
delimiter = settings.get('CSV_DELIMITER', ',')
kwargs['delimiter'] = delimiter
super(CsvOptionRespectingItemExporter, self).__init__(*args, **kwargs)
クローラー ディレクトリのsettings.py
ファイルに、次を追加します。
FEED_EXPORTERS = {
'csv': 'importable.path.to.CsvOptionRespectingItemExporter',
}
これで、次のようにスパイダーを実行できます。
scrapy crawl spidername --set FEED_URI=output.csv --set FEED_FORMAT=csv --set CSV_DELIMITER=';'
HTH。