diff --git a/docs/topics/loaders.rst b/docs/topics/loaders.rst index 4ac514be6c8..d571d564d69 100644 --- a/docs/topics/loaders.rst +++ b/docs/topics/loaders.rst @@ -182,21 +182,32 @@ output processors to use: in the :ref:`Item Field ` metadata. Here is an example:: import scrapy - from scrapy.contrib.loader.processor import MapCompose, Join, TakeFirst - from w3lib.html import remove_entities - from myproject.utils import filter_prices + from scrapy.contrib.loader.processor 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_entities), + input_processor=MapCompose(remove_tags), output_processor=Join(), ) price = scrapy.Field( - default=0, - input_processor=MapCompose(remove_entities, filter_prices), + input_processor=MapCompose(remove_tags, filter_price), output_processor=TakeFirst(), ) +:: + + >>> from scrapy.contrib.loader import ItemLoader + >>> il = ItemLoader(item=Product()) + >>> il.add_value('name', [u'Welcome to my', u'website']) + >>> il.add_value('price', [u'€', u'1000']) + >>> il.load_item() + {'name': u'Welcome to my website', 'price': u'1000'} + The precedence order, for both input and output processors, is as follows: 1. Item Loader field-specific attributes: ``field_in`` and ``field_out`` (most