Python 当传递到add_xpath()或add_value()时,处理器的调用顺序是什么?

Python 当传递到add_xpath()或add_value()时,处理器的调用顺序是什么?,python,scrapy,Python,Scrapy,使用Scrapy时,在传入add_value或add_xpath()调用时,处理器的调用顺序如下: ... foo_loader.add_xpath('title', '//title/text', TakeFirst(), Join(), etc etc) ... 从Scrapy docs中的这个例子来看:' >>> loader.get_value(u'name: foo', TakeFirst(), unicode.upper, re='name: (.+)') 'FO

使用Scrapy时,在传入add_value或add_xpath()调用时,处理器的调用顺序如下:

...
foo_loader.add_xpath('title', '//title/text', TakeFirst(), Join(), etc etc)
...
从Scrapy docs中的这个例子来看:'

>>> loader.get_value(u'name: foo', TakeFirst(), unicode.upper, re='name: (.+)')
'FOO`
我假设它们是从左到右调用的,TakeFirst()作为输入处理器,unicode.upper作为输出处理器,如果出于任何原因碰巧有两个以上的处理器,它们会从左到右依次调用


我的假设正确吗?

是的,它们被称为从左到右

add_xpath
最终调用
get_value
,其中包含以下内容:

get_value(self, value, *processors, **kw):
    [...]
    for proc in processors:
        [...]
        value = proc(value)
    return value
完整的ItemLoader源代码可在以下位置获得: