Scrapy:项目和字段的默认值,最佳实现是什么?

rm5edbpk  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(137)

据我从文档和网上的各种讨论中发现,在一个零碎的项目中向字段添加默认值的能力已经被删除。
"这行不通"

category = Field(default='null')

所以我的问题是:用默认值初始化字段的好方法是什么?
我已经尝试过将其实现为这里建议的项目管道,但没有任何成功。

3phpmpom

3phpmpom1#

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

class DefaultItemPipeline(object):

def process_item(self, item, spider):
    item.setdefault('amz_VendorsShippingDurationFrom', 'default')
    item.setdefault('amz_VendorsShippingDurationTo', 'default')
    # ...
    return item
d5vmydt9

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

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

相关问题