即使在导出的JSON中,我总是在结果中收到一个字符串。
使用双重翻译替换所有内容。 decimal_serializer
仅用于测试目的。我在内部调用了print(value)
,它返回了一个有效的float值。在我的结果中,它始终是unicode字符串。 add_value('offerCountNew', 1.3)
在我的结果中返回有效的浮点值。
我还尝试删除任何处理器或串行器。关于我在做什么错的任何想法吗?
项目
offerCountNew = scrapy.Field(output_processor = TakeFirst(), serializer = decimal_serializer)
蜘蛛
l.add_xpath('offerCountNew', 'number(translate(//*[@id="olp_feature_div"]//a[contains(@href, "new")], translate(//*[@id="olp_feature_div"]//a[contains(@href, "new")], "0123456789", ""), ""))')
结果
'offerCountNew': u'1.0',
JSON
"offerCountNew": "1.0",
答案 0 :(得分:1)
def process_float_or_int(value):
try:
return eval(value)
except:
return value
offerCountNew = scrapy.Field(input_processor = MapCompose(lambda x: process_float_or_int(x)), output_processor = TakeFirst())