如何为 Scrapy 项目加载器使用布尔值
How to use a boolean for Scrapy item loader
我正在尝试将项目加载器与 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 中存储一个布尔值。
是否有其他项目加载器方法可用于实现此目的?
问题不在于 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
我正在尝试将项目加载器与 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 中存储一个布尔值。
是否有其他项目加载器方法可用于实现此目的?
问题不在于 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