处理器在传递到add_xpath()或add_value()时调用了什么顺序?

时间:2014-08-06 10:50:56

标签: python scrapy

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

...
foo_loader.add_xpath('title', '//title/text', TakeFirst(), Join(), etc etc)
...

通过Scrapy文档中的这个例子来判断:'

>>> loader.get_value(u'name: foo', TakeFirst(), unicode.upper, re='name: (.+)')
'FOO`

我认为它们是从左到右调用的,TakeFirst()充当输入处理器,unicode.upper充当输出处理器,如果出于任何原因碰巧有两个以上的处理器, “一个接一个地从左到右打电话。”

我的假设是否正确?

1 个答案:

答案 0 :(得分:0)

是的,从左到右调用它们。

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

get_value(self, value, *processors, **kw):
    [...]
    for proc in processors:
        [...]
        value = proc(value)
    return value

完整的ItemLoader源代码可在此处获得: https://github.com/scrapy/scrapy/blob/master/scrapy/contrib/loader/__init__.py