scrapy 2.3 項目加載器上下文

2021-06-09 10:08 更新

項目加載器上下文是任意鍵/值的dict,在項目加載器中的所有輸入和輸出處理器之間共享。它可以在聲明、實例化或使用項加載器時傳遞。它們用于修改輸入/輸出處理器的行為。

例如,假設(shè)您有一個函數(shù) ?parse_length? 它接收文本值并從中提取長度:

def parse_length(text, loader_context):
    unit = loader_context.get('unit', 'm')
    # ... length parsing code goes here ...
    return parsed_length

接受一個 ?loader_context? 參數(shù)函數(shù)顯式地告訴項目加載器它能夠接收項目加載器上下文,因此項目加載器在調(diào)用它時傳遞當(dāng)前活動的上下文,以及處理器函數(shù) (?parse_length? 在這種情況下)可以使用它們。

修改項目加載器上下文值有幾種方法:

1、通過修改當(dāng)前活動的項加載器上下文 (?context? 屬性):

loader = ItemLoader(product) loader.context['unit'] = 'cm'

2、項目加載器實例化(項目加載器的關(guān)鍵字參數(shù) __init__ 方法存儲在項加載器上下文中):

loader = ItemLoader(product, unit='cm')

3、在項目加載器聲明中,用于那些支持用項目加載器上下文實例化它們的輸入/輸出處理器。 MapCompose 是其中之一:

class ProductLoader(ItemLoader): length_out = MapCompose(parse_length, unit='cm')
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號