scrapy 2.3 聲明輸入和輸出處理器

2021-06-07 15:31 更新

如前一節(jié)所述,可以在項目加載器定義中聲明輸入和輸出處理器,并且用這種方式聲明輸入處理器是非常常見的。但是,還有一個地方可以指定要使用的輸入和輸出處理器:在 Item Field 元數(shù)據(jù)。下面是一個例子:

import scrapy
from itemloaders.processors import Join, MapCompose, TakeFirst
from w3lib.html import remove_tags

def filter_price(value):
    if value.isdigit():
        return value

class Product(scrapy.Item):
    name = scrapy.Field(
        input_processor=MapCompose(remove_tags),
        output_processor=Join(),
    )
    price = scrapy.Field(
        input_processor=MapCompose(remove_tags, filter_price),
        output_processor=TakeFirst(),
    )
>>> from scrapy.loader import ItemLoader
>>> il = ItemLoader(item=Product())
>>> il.add_value('name', ['Welcome to my', '<strong>website</strong>'])
>>> il.add_value('price', ['&euro;', '<span>1000</span>'])
>>> il.load_item()
{'name': 'Welcome to my website', 'price': '1000'}

輸入和輸出處理器的優(yōu)先順序如下:

  1. 項目加載器字段特定屬性: ?field_in? 和 ?field_out? (最優(yōu)先)
  2. 字段元數(shù)據(jù) (?input_processor? 和 ?output_processor? 關(guān)鍵)
  3. 項目加載器默認(rèn)值: ?ItemLoader.default_input_processor()? 和 ?ItemLoader.default_output_processor()? (最低優(yōu)先級)
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號