gpt4 book ai didi

python - Scrapy:没有标题的 CSV 输出

转载 作者:太空宇宙 更新时间:2023-11-03 13:14:24 29 4
gpt4 key购买 nike

当我使用命令 scrapy crawl <project> -o <filename.csv> 时,我得到了我的 Item 的输出带标题的字典。这很好。但是,如果文件已经存在,我希望 scrapy 省略标题。 scrapy 是否能够执行此操作,或者我是否需要实现该功能?

最佳答案

编辑(2022.03.09):

这个答案是在 2015 年创建的,它显示了旧版 Scrapy 的解决方案

在新的 Scrapy (2.1+) 中你可以使用其他答案 'include_headers_line': False


CsvItemExporter里面有include_headers_line=True,但是不知道怎么直接用。 http://doc.scrapy.org/en/latest/topics/exporters.html#csvitemexporter

但是您可以在文件 exporters.py 中使用 include_headers_line=False 创建自己的导出器(与 settings.pyitems.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 <project> -o <filename.csv>

或者你可以设置

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

并且仅当您使用 -t headless 时才获取不带标题的 csv

scrapy crawl <project> -o <filename.csv> -t headless

附言。不要忘记在 setttings.py

中使用您的项目名称代替 your_project_name

编辑:

现在导出器仅在文件不为空时才跳过 header (如果 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)

关于python - Scrapy:没有标题的 CSV 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34485789/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com