我尝试使用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中存储一个布尔值。
我可以使用另一种项目加载器方法来实现此目的吗?
答案 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