1

有没有办法改变csv输出中的列名,例如,我有这样的scrapy项目:

import scrapy

class Myitems(scrapy.Item):
    recordi = scrapy.Field()

在我的蜘蛛脚本中我使用:

item['recordi'] = ....

我使用scrapy命令

scrapy crawl myspider -o data.csv

并且data.csv中的列名也是recordi,所以我的问题是,我可以更改列名吗,scapy.Field()是否有任何参数,我可以在其中定义列名,它保持recordi字段名,但是列名应该是 Recor Di

4

2 回答 2

1

AFIAK 没有这种机制内置的scrapy,当您在项目中定义字段名称时,您有不同的名称用于导出它。我认为您可以通过创建自定义的 CSV 导出器以编程方式完成此操作。当您使用此自定义专家时,它可以查找字段名称。您可以使用某种后处理脚本来获得类似的结果。

于 2021-10-21T14:16:10.900 回答
0

假设您遇到的问题是field名称必须遵守 python 变量名称语法,您可以简单地定义field如下,即下面的格式允许字段名称包含字符,例如不是有效的 python 变量名称的空格。

import scrapy

class Myitems(scrapy.Item):
    def __init__(self):
        super().__init__()
        self.fields["Recor Di"] = scrapy.Field()

然后在您的蜘蛛中,您可以按如下方式填充项目

item['Recor Di'] = ....

您的 csv 列名也将如此Recor Di

于 2021-10-22T10:40:51.440 回答