Scrapy Spider将float / int转换为字符串

时间:2018-09-10 14:14:56

标签: python xpath scrapy scrapy-spider

即使在导出的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",

1 个答案:

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