如何为Scrapy项加载器使用布尔值

时间:2015-03-11 02:32:10

标签: python scrapy

我尝试使用Scrapy 0.24.5的项目加载器。当我使用add_item()方法时,如果我想使用布尔值或整数,它会引发异常。

item.add_value('full_update', 1)
item.load_items()

产生以下错误:

ValueError: Error with output processor: field='full_update' value=[1] error='TypeError: expected string or buffer'

我理解它正在寻找一个字符串。但我需要在我的mongodb中存储一个布尔值。

我可以使用另一种项目加载器方法来实现此目的吗?

1 个答案:

答案 0 :(得分:0)

问题不在于add_value()方法。这是我的一个输出处理器期望一个字符串值full_update字段正在运行。

在我的items.py我将output_processor=Identity()添加到我的full_update字段中,现在可以正常运行:

class ProductsItem(scrapy.Item):
    full_update = scrapy.Field(output_processor=Identity())

class ProductsItemLoader(ItemLoader):
    default_item_class = ProductsItem
    default_output_processor = Compose(TakeFirst(), remove_tags, lambda v: replace_escape_chars(text=v, replace_by=' '), lambda v: v.encode('utf-8'), lambda v: ' '.join(v.split()))
pass