scrapy 2.3 项目加载器上下文
2021-06-09 10:08 更新
项目加载器上下文是任意键/值的dict,在项目加载器中的所有输入和输出处理器之间共享。它可以在声明、实例化或使用项加载器时传递。它们用于修改输入/输出处理器的行为。
例如,假设您有一个函数 parse_length
它接收文本值并从中提取长度:
def parse_length(text, loader_context):
unit = loader_context.get('unit', 'm')
# ... length parsing code goes here ...
return parsed_length
接受一个 loader_context
参数函数显式地告诉项目加载器它能够接收项目加载器上下文,因此项目加载器在调用它时传递当前活动的上下文,以及处理器函数 (parse_length
在这种情况下)可以使用它们。
修改项目加载器上下文值有几种方法:
1、通过修改当前活动的项加载器上下文 (context 属性):
loader = ItemLoader(product) loader.context['unit'] = 'cm'
2、项目加载器实例化(项目加载器的关键字参数 __init__ 方法存储在项加载器上下文中):
loader = ItemLoader(product, unit='cm')
3、在项目加载器声明中,用于那些支持用项目加载器上下文实例化它们的输入/输出处理器。 MapCompose 是其中之一:
class ProductLoader(ItemLoader): length_out = MapCompose(parse_length, unit='cm')
以上内容是否对您有帮助:
更多建议: