我使用scrapy-python在元素中获取了货币值510,940:
<span class="price-amount">
<span class="currency_symbol">₫</span>
510,940
</span>
我的代码:
item["price"] = response.xpath("//span[@class='price-amount']/text()").extract()
答案 0 :(得分:0)
这是price
和currency
的代码:
>>> txt = """<span class="price-amount">
... <span class="currency_symbol">₫</span>
... 510,940
... </span>"""
>>> sel = Selector(text=txt)
>>> sel.xpath('//span[@class="price-amount"]/span[@class="currency_symbol"]/following-sibling::text()').get()
u'\n 510,940\n'
>>> sel.xpath('//span[@class="price-amount"]/span[@class="currency_symbol"]/text()').get()
u'\u20ab'
答案 1 :(得分:0)
有了您的代码,我得到['\n ', '\n 510,940\n']
。
如果您想要510,940
,可以使用:
re:test(., '\d')
过滤掉不包含数字的字符串
.get()
(如果您想去上学,也可以使用.extract_first()
)将单个项目提取为字符串,而不是匹配字符串列表。
.strip()
删除周围的空格字符。
也就是说:
response.xpath("//span[@class='price-amount']/text()[re:test(., '\d')]").get().strip()
另外,为了提取价格,您可以使用专门的库,例如price-parser。