Scrapy spider 将 float / int 转换为 string
Scrapy spider converts float / int to string
我的结果中总是会收到一个字符串,即使是导出的 JSON。
使用双翻译替换所有内容。 decimal_serializer
仅用于测试目的。我在里面调用了 print(value)
,它返回了一个有效的浮点值。在我的结果中,它始终是 unicode 字符串。 add_value('offerCountNew', 1.3)
returns 我的结果中的有效浮点值。
我还尝试删除任何处理器或序列化器。关于我做错了什么有什么想法吗?
项目
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",
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())
我的结果中总是会收到一个字符串,即使是导出的 JSON。
使用双翻译替换所有内容。 decimal_serializer
仅用于测试目的。我在里面调用了 print(value)
,它返回了一个有效的浮点值。在我的结果中,它始终是 unicode 字符串。 add_value('offerCountNew', 1.3)
returns 我的结果中的有效浮点值。
我还尝试删除任何处理器或序列化器。关于我做错了什么有什么想法吗?
项目
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",
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())