現在、ItemLoadersにバグがあり、パラメータをget_output_value()
無視get_collected_values()
して確認するだけなので、これらのメソッドには、ロードされたデータが返されないという一貫性のない動作があります。item
ItemLoader._values
load_item()
>>> from scrapy.contrib.loader import ItemLoader
>>> il = ItemLoader(response=response, item=dict(foo=1))
>>> il.add_value('bar', 3)
>>> il._values
defaultdict(<type 'list'>, {'bar': [3]})
>>> il.item
{'foo': 1}
>>> il.get_output_value('foo')
[]
>>> il.get_output_value('bar')
[3]
>>> il.get_collected_values('foo')
[]
>>> il.get_collected_values('bar')
[3]
提案されたパッチをインストールすることも、使用しないこともできますget_collected_values
。パッチをインストールするvalues
と、このパッチでパラメータを使用でき、より適切な結果が得られます。
>>> from scrapy.contrib.loader import ItemLoader
>>> il = ItemLoader(response=response, item={}, values=dict(foo=1))
>>> il.add_value('bar', 3)
>>> il._values
defaultdict(<type 'list'>, {'foo': [1], 'bar': [3]})
>>> il.item
{}
>>> il.get_output_value('foo')
[1]
>>> il.get_output_value('bar')
[3]
>>> il.get_collected_values('foo')
[1]
>>> il.get_collected_values('bar')
[3]