首页 > 解决方案 > 如何使用 Python 和 lxml 从具有多个属性的“跨度”中提取文本

问题描述

我在尝试使用 Python 和 lxml 从 span 元素中提取一些文本时遇到问题,我已经设法将其用于某些站点但不是全部。所以我有一个函数可以从网站中提取价格,这在以下代码片段中使用 URL 和 xpath 时有效。

def get_price(last_date):
    page = requests.get('https://www.komplett.no/product/954922/gaming/gaming-utstyr/gamingskjermer/hp-omen-27-gamingskjerm-z4d33aa')
    tree = html.fromstring(page.content)
    prices = tree.xpath('//span[@class="product-price-now"]/text()')
    currentPrice = 0
    for string in prices:
        currentPrice = string.strip(",-")
        print(currentPrice)
    foo(currentPrice, last_date)

但是,当我尝试使用不同的 URL 和具有多个属性的不同 span 元素使用相同的方法时,这是行不通的,这是我无法获取使用文本的 span 元素的代码片段

<span class="DFlfde SwHCTb" data-precision="2" data-value="77954.88534">77,954.89</span>

然后我尝试通过执行以下操作从这个 span 元素中提取文本:

prices = tree.xpath('//span[@class="DFlfde SwHCTb"]/text()')

但这不起作用,知道为什么`?

标签: pythonmatplotliblxml

解决方案


推荐阅读