我正在建立一个刮板来从网站上获取产品价格。
目前我有以下代码:
def parse(self, response):
for tank in response.xpath('//html/body/div/div[4]/div/div/div/table[1]/tr/td/div/span/span'):
item = VapeItem()
item["price"] = tank.xpath("text()").extract()
yield item
这是json输出:
{"price": ["5,00 \u20ac\n \n \n \n \n \n *\n \n \n \n "]},
我尝试过编码(" utf-8"),剥离,替换,但似乎没有任何效果。
我的问题是:如何使输出可读。制作" 5.00€" (\ u20ac)或只是" 5.00"
提前致谢!
答案 0 :(得分:1)
最简单的方法可能是拆分一次并用小数替换任何逗号:
item["price"] = tank.xpath("text()").extract()[0].split(None,1)[0].replace(",",".")
这会让你5.00
。因为字符串条中的*
不起作用,你可以传递该字符来剥离i,e [0].rstrip("\n* ")
但是如果有其他错误的字符会破坏。
如果您也想要欧元符号,可以decode('unicode-escape')
:
d={"price": ["5,00 \u20ac\n \n \n \n \n \n *\n \n \n \n "]}
d["price"] = d["price"][0].decode('unicode-escape').rstrip("\n * ").replace(",",".")
print(d["price"])
5.00 €
如果你想将它与拆分结合起来并保留标志,也可以将它格式化得更好:
p,s,_ = d["price"][0].split(None, 2)
d["price"] = u"{}{}".format(s.decode("unicode_escape"),p.replace(",","."))
print(d["price"])
哪个会给你:
€5.00