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())