据我从文档和网络上的各种讨论中了解到,将默认值添加到 scrapy 项目中的字段的功能已被删除。
这不起作用
category = Field(default='null')
所以我的问题是:用默认值初始化字段的好方法是什么?
我已经尝试按照此处的建议将其实现为项目管道,但没有任何成功。 https://groups.google.com/forum/?fromgroups=#!topic/scrapy-users/-v1p5W41VDQ
据我从文档和网络上的各种讨论中了解到,将默认值添加到 scrapy 项目中的字段的功能已被删除。
这不起作用
category = Field(default='null')
所以我的问题是:用默认值初始化字段的好方法是什么?
我已经尝试按照此处的建议将其实现为项目管道,但没有任何成功。 https://groups.google.com/forum/?fromgroups=#!topic/scrapy-users/-v1p5W41VDQ
找出问题所在。管道正在工作(代码如下供其他人参考)。我的问题是,我将值附加到一个字段。我希望默认方法在这些列表值之一上工作......选择了一种不同的方式并且它可以工作。我现在使用自定义的 setDefault 处理器方法来实现它。
class DefaultItemPipeline(object):
def process_item(self, item, spider):
item.setdefault('amz_VendorsShippingDurationFrom', 'default')
item.setdefault('amz_VendorsShippingDurationTo', 'default')
# ...
return item
通常,构造函数用于初始化字段。
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
这可能不是一个干净的解决方案,但它避免了不必要的管道。