据我所知,从网上的文档和各种讨论中可以看出,为scrapy项中的字段添加默认值的功能已被删除。
这不起作用
category = Field(default='null')
所以我的问题是:用默认值初始化字段的好方法是什么?
我已经尝试将其实现为此处建议的项目管道,但没有任何成功。 https://groups.google.com/forum/?fromgroups=#!topic/scrapy-users/-v1p5W41VDQ
答案 0 :(得分:4)
弄清楚问题是什么。管道正在运行(代码遵循其他人的参考)。我的问题是,我将值附加到字段。我希望默认方法适用于其中一个listvalues ...选择不同的方式并且它可以工作。我现在使用自定义setDefault处理器方法实现它。
class DefaultItemPipeline(object):
def process_item(self, item, spider):
item.setdefault('amz_VendorsShippingDurationFrom', 'default')
item.setdefault('amz_VendorsShippingDurationTo', 'default')
# ...
return item
答案 1 :(得分:0)
通常,构造函数用于初始化字段。
class SomeItem(scrapy.Item):
id = scrapy.Field()
json = scrapy.Field()
done = scrapy.Field()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self['done'] = 1 # set default value
这可能不是一个干净的解决方案,但它避免了不必要的管道。