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')
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号