目前尚bug in 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]
您可以安裝the proposed patch或只是不使用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]
非常棒!謝謝! – Jabb 2013-03-19 18:22:30