当前位置:  开发笔记 > 编程语言 > 正文

Scrapy:没有标题的CSV输出

如何解决《Scrapy:没有标题的CSV输出》经验,为你挑选了1个好方法。

当我使用该命令时scrapy crawl -o ,我得到Item带有标题的字典输出.这很好.但是,如果文件已存在,我希望scrapy省略标题.scrapy能够做到这一点还是我需要实现该功能?



1> furas..:

include_headers_line=True,CsvItemExporter但我不知道如何直接使用它.http://doc.scrapy.org/en/latest/topics/exporters.html#csvitemexporter

但您可以include_headers_line=False在文件中创建自己的导出器exporters.py(与settings.pyand 相同的文件夹items.py)

from scrapy.exporters import CsvItemExporter


class HeadlessCsvItemExporter(CsvItemExporter):

    def __init__(self, *args, **kwargs):
        kwargs['include_headers_line'] = False
        super(HeadlessCsvItemExporter, self).__init__(*args, **kwargs)

然后你必须设置这个导出器 settings.py

FEED_EXPORTERS = {
    'csv': 'your_project_name.exporters.HeadlessCsvItemExporter',
}

现在scrapy应该写所有没有标题的csv文件.

scrapy crawl  -o 

或者你可以设置

FEED_EXPORTERS = {
    'headless': 'your_project_name.exporters.HeadlessCsvItemExporter',
}

只有在使用时才能获得没有标题的csv -t headless

scrapy crawl  -o  -t headless

PS.别忘了到位的使用您的项目名称your_project_namesetttings.py


编辑:

现在导出器仅在文件不为空时跳过标题(如果file.tell() > 0)

from scrapy.exporters import CsvItemExporter


class HeadlessCsvItemExporter(CsvItemExporter):

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

        # args[0] is (opened) file handler
        # if file is not empty then skip headers
        if args[0].tell() > 0:
            kwargs['include_headers_line'] = False

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

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有