Decorador, ejecuta la función parse y procesa el resultado
    como una lista de items, ejecutando la función 'saveitem' que corresponda.

def catchItem(f, theSpider=None):
    """Decorador, ejecuta la función parse y procesa el resultado
    como una lista de items, ejecutando la función 'saveitem' que corresponda."""
    def new_f(*args, **kwargs):
        #print("thepath "+os.getcwd())
        #print("the spider")
        #print(str(theSpider))
        items = f(*args, **kwargs)
        if items is None:
            return items
        if isinstance(items, Item):
            processItem(items, args, theSpider)
        elif len(items) > 0:
            if isinstance(items, ItemList):
                    processItemList(items, args, theSpider)
            else:
                for item in items:
                    #print("procesando items")
                    if isinstance(item, ItemList):
                        processItemList(item, args, theSpider)
                    elif isinstance(item, Item):
                        processItem(item, args, theSpider)
                    elif isinstance(item, str):
                        aSpider = args[0]
                        aSpider.parse(url=item)
        return items
    return new_f