Skip to content

Commit

Permalink
Merge pull request scrapy#804 from darkrho/issue-560
Browse files Browse the repository at this point in the history
Updated input/ouput processor example according to scrapy#560.
  • Loading branch information
pablohoffman committed Jul 16, 2014
2 parents a17d417 + e441a01 commit e748ca5
Showing 1 changed file with 17 additions and 6 deletions.
23 changes: 17 additions & 6 deletions docs/topics/loaders.rst
Original file line number Diff line number Diff line change
Expand Up @@ -182,21 +182,32 @@ output processors to use: in the :ref:`Item Field <topics-items-fields>`
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'<strong>website</strong>'])
>>> il.add_value('price', [u'&euro;', u'<span>1000</span>'])
>>> 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
Expand Down

0 comments on commit e748ca5

Please sign in to comment.