如果我已经填充了Item(),我如何用它加载itemloader?

例如

from scrapy import Item, ItemLoader, Field

class MyLoader(ItemLoader):
    desc_out = MapCompose(unicode.strip)

class MyItem(Item):
    desc = Field()


item = MyItem()
item['desc'] = "\r\t\n        some text            \t\n"
loader = MyLoader(item)
loader.load_item()
#output: {'desc': "\r\t\n        some text            \t\n"}


newloader = MyLoader(item = MyItem(**{'desc':'\n\ta\n'}))
loader.load_item()
#output still: {'desc': "\r\t\n        some text            \t\n"}


我想使用加载程序进行一些输出处理,但是在此示例中,空格没有被剥离

最佳答案

加载程序不会处理您未通过add_方法添加的值。您可以将ItemLoader子类化:

class ReloadableItemLoader(ItemLoader):
    def __init__(self, *args, **kwargs):
        super(ReloadableItemLoader, self).__init__(*args, **kwargs)

        for key, value in self.item.iteritems():
            self._add_value(key, value)

10-04 09:52