据我从文档和网上的各种讨论中发现,在一个零碎的项目中向字段添加默认值的能力已经被删除。"这行不通"
category = Field(default='null')
所以我的问题是:用默认值初始化字段的好方法是什么?我已经尝试过将其实现为这里建议的项目管道,但没有任何成功。
3phpmpom1#
我发现了问题所在。管道正在工作(代码如下供其他人参考)。我的问题是,我正在向字段追加值。我希望默认方法在这些列表值中的一个上工作...选择了一种不同的方式,它工作了。我现在使用自定义setDefault处理器方法实现它。
class DefaultItemPipeline(object): def process_item(self, item, spider): item.setdefault('amz_VendorsShippingDurationFrom', 'default') item.setdefault('amz_VendorsShippingDurationTo', 'default') # ... return item
d5vmydt92#
通常,构造函数用于初始化字段。
class SomeItem(scrapy.Item): id = scrapy.Field() category = scrapy.Field() def __init__(self, *args,**kwargs): super().__init__(*args,**kwargs) self['category'] = 'null' # set default value
这可能不是一个干净的解决方案,但它避免了不必要的管道。
2条答案
按热度按时间3phpmpom1#
我发现了问题所在。管道正在工作(代码如下供其他人参考)。我的问题是,我正在向字段追加值。我希望默认方法在这些列表值中的一个上工作...选择了一种不同的方式,它工作了。我现在使用自定义setDefault处理器方法实现它。
d5vmydt92#
通常,构造函数用于初始化字段。
这可能不是一个干净的解决方案,但它避免了不必要的管道。