如何使用xpath()获取<span>元素中的值?

时间:2019-04-24 03:58:59

标签: python scrapy

我使用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()

2 个答案:

答案 0 :(得分:0)

这是pricecurrency的代码:

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