首页 > 解决方案 > 从 Scrapy 响应的开头和结尾去除 \t

问题描述

我想清理我的 Scrapy 响应。我正在构建一个简单的价格监视器,但我无法获得干净的价格。

我得到以下回应:

['\n\t\t\t\t\t\t\t\t\t\t\t\t272.28€\t\t\t\t\t\t\t\t\t\t\t']

理想情况下,我希望它是(浮动?):

272.28

我正在使用scrapy项目来存储值,例如:

def parse_item(self, response):
    item = HobbyItem()
    item['new_price'] = response.css('span.price.new-price').extract()
    item['base_price'] = response.css('span.price.base-price').extract()

谢谢您的帮助!

标签: pythonscrapy

解决方案


因为看起来文本在列表中,所以您首先需要将文本从列表中取出,然后将其剥离

>>> response = ['\n\t\t\t\t\t\t\t\t\t\t\t\t272.28€\t\t\t\t\t\t\t\t\t\t\t']
>>> text = response[0]
'\n\t\t\t\t\t\t\t\t\t\t\t\t272.28€\t\t\t\t\t\t\t\t\t\t\t'
>>> clean_text = text.strip()
'272.28€'
>>> number_text = clean_text.replace("€", "")
'272.28'
>>> number = float(number_text)
272.28

或作为单线:

>>> response = ['\n\t\t\t\t\t\t\t\t\t\t\t\t272.28€\t\t\t\t\t\t\t\t\t\t\t']
>>> float(response[0].strip().replace("€", ""))
272.28

推荐阅读