6

据我从文档和网络上的各种讨论中了解到,将默认值添加到 scrapy 项目中的字段的功能已被删除。

这不起作用

category = Field(default='null')

所以我的问题是:用默认值初始化字段的好方法是什么?

我已经尝试按照此处的建议将其实现为项目管道,但没有任何成功。 https://groups.google.com/forum/?fromgroups=#!topic/scrapy-users/-v1p5W41VDQ

4

2 回答 2

4

找出问题所在。管道正在工作(代码如下供其他人参考)。我的问题是,我将值附加到一个字段。我希望默认方法在这些列表值之一上工作......选择了一种不同的方式并且它可以工作。我现在使用自定义的 setDefault 处理器方法来实现它。

class DefaultItemPipeline(object):

def process_item(self, item, spider):
    item.setdefault('amz_VendorsShippingDurationFrom', 'default')
    item.setdefault('amz_VendorsShippingDurationTo', 'default')
    # ...
    return item
于 2013-03-29T09:38:47.077 回答
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

这可能不是一个干净的解决方案,但它避免了不必要的管道。

于 2021-07-21T10:37:06.860 回答