Scrapy:项目的默认值&领域。什么是最好的实施?

时间:2013-03-29 00:28:19

标签: scrapy

据我所知,从网上的文档和各种讨论中可以看出,为scrapy项中的字段添加默认值的功能已被删除。

这不起作用

category = Field(default='null')

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

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

2 个答案:

答案 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

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

相关问题