使用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充当输出处理器,如果出于任何原因碰巧有两个以上的处理器, “一个接一个地从左到右打电话。”
我的假设是否正确?
答案 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