How to override join_multivalued option of CsvItemExporter

大兔子大兔子 提交于 2020-02-28 08:49:12

问题


CsvItemExporter has an option join_multivalued that defaults to a comma (=',').

How can i change this to another char in my scrapy project?


回答1:


Set it in your custom CSVItemExporter this way:

from scrapy.conf import settings
from scrapy.contrib.exporter import CsvItemExporter

class CSVkwItemExporter(CsvItemExporter):

    def __init__(self, *args, **kwargs):
        kwargs['fields_to_export'] = settings.getlist('EXPORT_FIELDS') or None
        kwargs['encoding'] = settings.get('EXPORT_ENCODING', 'utf-8')

        super(CSVkwItemExporter, self).__init__(*args, **kwargs)

        self._join_multivalued = settings.get('MY_CSV_DELIMITER', ',')

where MY_CSV_DELIMITER is an example setting you would have for a delimiter.




回答2:


Scrapy version 1.5.0

your_scrapy_project/exporters.py

from scrapy.conf import settings
from scrapy.exporters import CsvItemExporter

class MyCsvItemExporter(CsvItemExporter):

    def __init__(self, *args, **kwargs):

        delimiter = settings.get('CSV_DELIMITER', ';')
        kwargs['delimiter'] = delimiter

        super(MyCsvItemExporter, self).__init__(*args, **kwargs) 

your_scrapy_project/settings.py

FEED_EXPORT_ENCODING = 'utf-8'

FEED_EXPORTERS = {
    'csv': 'your_scrapy_project.exporters.MyCsvItemExporter',
}

CSV_DELIMITER = ';'


来源:https://stackoverflow.com/questions/28089977/how-to-override-join-multivalued-option-of-csvitemexporter

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!