W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
項目加載器為每個(項目)字段包含一個輸入處理器和一個輸出處理器。輸入處理器一旦接收到提取的數(shù)據(jù)(通過 ?add_xpath()
? , ?add_css()
? 或 ?add_value()
? 方法),輸入處理器的結(jié)果被收集并保存在itemloader中。在收集所有數(shù)據(jù)之后, ?ItemLoader.load_item()
? 方法來填充和獲取填充的 item
object . 此時,將使用先前收集的數(shù)據(jù)(并使用輸入處理器處理)調(diào)用輸出處理器。輸出處理器的結(jié)果是分配給項目的最終值。
讓我們看一個例子來說明如何為一個特定的字段調(diào)用輸入和輸出處理器(這同樣適用于任何其他字段)::
l = ItemLoader(Product(), some_selector)
l.add_xpath('name', xpath1) # (1)
l.add_xpath('name', xpath2) # (2)
l.add_css('name', css) # (3)
l.add_value('name', 'test') # (4)
return l.load_item() # (5)
所以發(fā)生的是:
xpath1
? 提取并通過 輸入處理器 的 ?name
? 字段。輸入處理器的結(jié)果被收集并保存在項目加載器中(但尚未分配給項目)。xpath2
? 提取并通過 輸入處理器 用于(1)。輸入處理器的結(jié)果將附加到(1)中收集的數(shù)據(jù)(如果有)中。css
? 并通過相同的 輸入處理器 用于(1)和(2)。輸入處理器的結(jié)果將附加到(1)和(2)中收集的數(shù)據(jù)(如果有)中。name
? 字段。輸出處理器的結(jié)果是分配給 ?name
? 項目中的字段。值得注意的是,處理器只是可調(diào)用的對象,它們與要解析的數(shù)據(jù)一起調(diào)用,并返回已解析的值。所以你可以使用任何函數(shù)作為輸入或輸出處理器。唯一的要求是它們必須接受一個(而且只有一個)位置參數(shù),這將是一個iterable。
在 2.0 版更改: 處理器不再需要是方法。
注解
輸入和輸出處理器都必須接收iterable作為其第一個參數(shù)。這些函數(shù)的輸出可以是任何東西。輸入處理器的結(jié)果將被附加到一個內(nèi)部列表中(在加載程序中),其中包含收集的值(對于該字段)。輸出處理器的結(jié)果是最終分配給項目的值。
您需要記住的另一件事是,輸入處理器返回的值在內(nèi)部收集(在列表中),然后傳遞給輸出處理器來填充字段。
最后,但并非最不重要, itemloaders 有一些 commonly used processors 內(nèi)置方便。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: