【问题标题】:How to maintain Item's Field Names in one file with Scrapy?如何使用 Scrapy 在一个文件中维护项目的字段名称?
【发布时间】:2015-02-24 10:55:39
【问题描述】:

在scrapy中,涉及到很多Item的字段名写法。

1.项目类 (Items.py)

class HelloItem(scrapy.Item):
   Name = scrapy.Field()
   Address = scrapy.Field()
   ...

2。蜘蛛类 (spider.py)

class HelloSpider(scrapy.Spider):

    def parse(self, response):
       item = HelloItem()
       item["Name"] = ...
       item["Address'] = ...
       ...

3. settings.py

EXPORT_FIELDS = ["Name", "Address", ...]

我在settings.py 中定义了EXPORT_FIELDS 设置,用于定义自定义CSV 项目管道的字段排序。 CSV 管道代码类似于this,除了self.exporter.fields_to_exportsettings.getlist("EXPORT_FIELDS") 加载。


您可以看到我必须在三个地方定义字段名称(名称、地址等)。如果有一天我必须重命名某些字段名称,我必须在这三个文件中更改它们。

那么有没有办法将项目的字段名称定义统一到一个文件中? (或者两个文件也可以,少总比没有好)

【问题讨论】:

    标签: python csv web-scraping scrapy


    【解决方案1】:

    不能根本不使用项目,而是使用字典。这样一来,您就根本不需要items.py

    但是,随着项目的发展,建议定义 Item 子类,而您提到的重复是较小的邪恶

    由于定义了一个项目,当您尝试在其中一个蜘蛛中使用拼写错误抓取项目字段时,您可能会收到一条错误消息。

    物品类还允许您使用item loaders

    【讨论】:

      猜你喜欢
      • 2023-03-05
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多